RxFPC:RxDBGrid - add new event - OnCalcRowHeight

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5864 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
alexs75
2017-05-18 11:16:05 +00:00
parent 078274920d
commit 8b8e8dead8
6 changed files with 95 additions and 92 deletions

View File

@ -21,22 +21,16 @@
<FormatVersion Value="1"/> <FormatVersion Value="1"/>
</local> </local>
</RunParams> </RunParams>
<RequiredPackages Count="5"> <RequiredPackages Count="3">
<Item1> <Item1>
<PackageName Value="FCL"/> <PackageName Value="FCL"/>
</Item1> </Item1>
<Item2> <Item2>
<PackageName Value="UIBLaz"/> <PackageName Value="rxnew"/>
</Item2> </Item2>
<Item3> <Item3>
<PackageName Value="fbdemofpc"/>
</Item3>
<Item4>
<PackageName Value="rxnew"/>
</Item4>
<Item5>
<PackageName Value="LCL"/> <PackageName Value="LCL"/>
</Item5> </Item3>
</RequiredPackages> </RequiredPackages>
<Units Count="2"> <Units Count="2">
<Unit0> <Unit0>

View File

@ -7,7 +7,7 @@ uses
cthreads, cthreads,
{$ENDIF}{$ENDIF} {$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset Interfaces, // this includes the LCL widgetset
Forms, Unit1, uiblaz, rxnew Forms, Unit1, rxnew
{ you can add units after this }; { you can add units after this };
{$R *.res} {$R *.res}

View File

@ -11,7 +11,7 @@
<WindowIndex Value="-1"/> <WindowIndex Value="-1"/>
<TopLine Value="-1"/> <TopLine Value="-1"/>
<CursorPos X="-1" Y="-1"/> <CursorPos X="-1" Y="-1"/>
<UsageCount Value="24"/> <UsageCount Value="26"/>
</Unit0> </Unit0>
<Unit1> <Unit1>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
@ -20,23 +20,22 @@
<HasResources Value="True"/> <HasResources Value="True"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<UnitName Value="Unit1"/> <UnitName Value="Unit1"/>
<TopLine Value="21"/> <IsVisibleTab Value="True"/>
<CursorPos X="59" Y="47"/> <CursorPos X="32" Y="8"/>
<UsageCount Value="24"/> <UsageCount Value="26"/>
<Loaded Value="True"/> <Loaded Value="True"/>
<LoadedDesigner Value="True"/> <LoadedDesigner Value="True"/>
</Unit1> </Unit1>
<Unit2> <Unit2>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="1"/> <EditorIndex Value="1"/>
<TopLine Value="4731"/> <TopLine Value="851"/>
<CursorPos X="16" Y="4746"/> <CursorPos Y="867"/>
<UsageCount Value="12"/> <UsageCount Value="13"/>
<Bookmarks Count="3"> <Bookmarks Count="3">
<Item0 Y="4709" ID="2"/> <Item0 Y="4704" ID="2"/>
<Item1 X="7" Y="4760" ID="3"/> <Item1 X="7" Y="4755" ID="3"/>
<Item2 Y="3384" ID="1"/> <Item2 Y="3389" ID="1"/>
</Bookmarks> </Bookmarks>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit2> </Unit2>
@ -44,9 +43,9 @@
<Filename Value="../../../../../lcl/dbgrids.pas"/> <Filename Value="../../../../../lcl/dbgrids.pas"/>
<UnitName Value="DBGrids"/> <UnitName Value="DBGrids"/>
<EditorIndex Value="3"/> <EditorIndex Value="3"/>
<TopLine Value="1915"/> <TopLine Value="2880"/>
<CursorPos Y="1934"/> <CursorPos Y="2901"/>
<UsageCount Value="12"/> <UsageCount Value="13"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit3> </Unit3>
<Unit4> <Unit4>
@ -55,7 +54,7 @@
<EditorIndex Value="4"/> <EditorIndex Value="4"/>
<TopLine Value="2482"/> <TopLine Value="2482"/>
<CursorPos X="3" Y="2484"/> <CursorPos X="3" Y="2484"/>
<UsageCount Value="12"/> <UsageCount Value="13"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit4> </Unit4>
<Unit5> <Unit5>
@ -63,7 +62,7 @@
<EditorIndex Value="2"/> <EditorIndex Value="2"/>
<TopLine Value="1560"/> <TopLine Value="1560"/>
<CursorPos X="15" Y="1578"/> <CursorPos X="15" Y="1578"/>
<UsageCount Value="12"/> <UsageCount Value="13"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit5> </Unit5>
<Unit6> <Unit6>
@ -71,150 +70,150 @@
<EditorIndex Value="-1"/> <EditorIndex Value="-1"/>
<TopLine Value="199"/> <TopLine Value="199"/>
<CursorPos X="3" Y="202"/> <CursorPos X="3" Y="202"/>
<UsageCount Value="10"/> <UsageCount Value="9"/>
</Unit6> </Unit6>
<Unit7> <Unit7>
<Filename Value="/home/install/source/fpcsrc/packages/fcl-db/src/base/dataset.inc"/> <Filename Value="/home/install/source/fpcsrc/packages/fcl-db/src/base/dataset.inc"/>
<EditorIndex Value="-1"/> <EditorIndex Value="-1"/>
<TopLine Value="1284"/> <TopLine Value="1284"/>
<CursorPos X="3" Y="1287"/> <CursorPos X="3" Y="1287"/>
<UsageCount Value="10"/> <UsageCount Value="9"/>
</Unit7> </Unit7>
<Unit8> <Unit8>
<Filename Value="../../../../../lcl/include/wincontrol.inc"/> <Filename Value="../../../../../lcl/include/wincontrol.inc"/>
<EditorIndex Value="-1"/> <EditorIndex Value="-1"/>
<TopLine Value="5739"/> <TopLine Value="5739"/>
<CursorPos Y="5757"/> <CursorPos Y="5757"/>
<UsageCount Value="10"/> <UsageCount Value="9"/>
</Unit8> </Unit8>
<Unit9> <Unit9>
<Filename Value="../../../../../lcl/include/winapi.inc"/> <Filename Value="../../../../../lcl/include/winapi.inc"/>
<EditorIndex Value="-1"/> <EditorIndex Value="-1"/>
<TopLine Value="929"/> <TopLine Value="929"/>
<CursorPos Y="949"/> <CursorPos Y="949"/>
<UsageCount Value="10"/> <UsageCount Value="9"/>
</Unit9> </Unit9>
</Units> </Units>
<JumpHistory Count="30" HistoryIndex="29"> <JumpHistory Count="30" HistoryIndex="29">
<Position1> <Position1>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="4750" TopLine="4731"/> <Caret Line="4760" TopLine="4731"/>
</Position1> </Position1>
<Position2> <Position2>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="4751" TopLine="4731"/> <Caret Line="4739" TopLine="4731"/>
</Position2> </Position2>
<Position3> <Position3>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="4747" TopLine="4731"/> <Caret Line="4743" Column="8" TopLine="4731"/>
</Position3> </Position3>
<Position4> <Position4>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="4749" TopLine="4731"/> <Caret Line="4944" Column="12" TopLine="4913"/>
</Position4> </Position4>
<Position5> <Position5>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="4750" TopLine="4731"/> <Caret Line="700" Column="15" TopLine="683"/>
</Position5> </Position5>
<Position6> <Position6>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="4751" TopLine="4731"/> <Caret Line="2768" Column="3" TopLine="2757"/>
</Position6> </Position6>
<Position7> <Position7>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="4747" TopLine="4731"/> <Caret Line="2861" Column="9" TopLine="2861"/>
</Position7> </Position7>
<Position8> <Position8>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="4749" TopLine="4731"/> <Caret Line="824" Column="15" TopLine="791"/>
</Position8> </Position8>
<Position9> <Position9>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="4750" TopLine="4731"/> <Caret Line="5142" Column="57" TopLine="5125"/>
</Position9> </Position9>
<Position10> <Position10>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="4751" TopLine="4731"/> <Caret Line="854" Column="90" TopLine="838"/>
</Position10> </Position10>
<Position11> <Position11>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="4747" TopLine="4731"/> <Caret Line="853" Column="51" TopLine="840"/>
</Position11> </Position11>
<Position12> <Position12>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="4749" TopLine="4731"/> <Caret Line="75" Column="25" TopLine="55"/>
</Position12> </Position12>
<Position13> <Position13>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="4750" TopLine="4731"/> <Caret Line="854" Column="96" TopLine="834"/>
</Position13> </Position13>
<Position14> <Position14>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="4751" TopLine="4731"/> <Caret Line="30" Column="80" TopLine="13"/>
</Position14> </Position14>
<Position15> <Position15>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="4747" TopLine="4731"/> <Caret Line="45" TopLine="24"/>
</Position15> </Position15>
<Position16> <Position16>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="4749" TopLine="4731"/> <Caret Line="818" TopLine="800"/>
</Position16> </Position16>
<Position17> <Position17>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="4750" TopLine="4731"/> <Caret Line="3391" Column="3" TopLine="3363"/>
</Position17> </Position17>
<Position18> <Position18>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="4751" TopLine="4731"/> <Caret Line="30" Column="37" TopLine="28"/>
</Position18> </Position18>
<Position19> <Position19>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="4747" TopLine="4731"/> <Caret Line="83" Column="3" TopLine="62"/>
</Position19> </Position19>
<Position20> <Position20>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="4749" TopLine="4731"/> <Caret Line="84" Column="30" TopLine="59"/>
</Position20> </Position20>
<Position21> <Position21>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="4750" TopLine="4731"/> <Caret Line="83" Column="42" TopLine="34"/>
</Position21> </Position21>
<Position22> <Position22>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="4751" TopLine="4731"/> <Caret Line="30" Column="38" TopLine="23"/>
</Position22> </Position22>
<Position23> <Position23>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="4747" TopLine="4731"/> <Caret Line="90" Column="3" TopLine="70"/>
</Position23> </Position23>
<Position24> <Position24>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="4749" TopLine="4731"/> <Caret Line="62" Column="3" TopLine="50"/>
</Position24> </Position24>
<Position25> <Position25>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="4750" TopLine="4731"/> <Caret Line="31" Column="15" TopLine="8"/>
</Position25> </Position25>
<Position26> <Position26>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="4751" TopLine="4731"/> <Caret Line="90" TopLine="68"/>
</Position26> </Position26>
<Position27> <Position27>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="4747" TopLine="4731"/> <Caret Line="27" Column="15" TopLine="12"/>
</Position27> </Position27>
<Position28> <Position28>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="4749" TopLine="4731"/> <Caret Line="64" TopLine="59"/>
</Position28> </Position28>
<Position29> <Position29>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="4750" TopLine="4731"/> <Caret Line="31" Column="15" TopLine="8"/>
</Position29> </Position29>
<Position30> <Position30>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="4751" TopLine="4731"/> <Caret Line="89" TopLine="64"/>
</Position30> </Position30>
</JumpHistory> </JumpHistory>
</ProjectSession> </ProjectSession>
@ -225,8 +224,16 @@
<WatchScope Value="wpsLocal"/> <WatchScope Value="wpsLocal"/>
<WatchKind Value="wpkWrite"/> <WatchKind Value="wpkWrite"/>
<Source Value="../../../rxdb/rxdbgrid.pas"/> <Source Value="../../../rxdb/rxdbgrid.pas"/>
<Line Value="5713"/> <Line Value="5708"/>
</Item1> </Item1>
</BreakPoints> </BreakPoints>
<Watches Count="2">
<Item1>
<Expression Value="H1"/>
</Item1>
<Item2>
<Expression Value="H"/>
</Item2>
</Watches>
</Debugging> </Debugging>
</CONFIG> </CONFIG>

View File

@ -129,6 +129,7 @@ object Form1: TForm1
FooterOptions.DrawFullLine = True FooterOptions.DrawFullLine = True
SearchOptions.QuickSearchOptions = [loCaseInsensitive, loPartialKey] SearchOptions.QuickSearchOptions = [loCaseInsensitive, loPartialKey]
SearchOptions.FromStart = False SearchOptions.FromStart = False
OnCalcRowHeight = RxDBGrid1CalcRowHeight
OptionsRx = [rdgAllowColumnsForm, rdgAllowDialogFind, rdgFooterRows, rdgAllowQuickFilter] OptionsRx = [rdgAllowColumnsForm, rdgAllowDialogFind, rdgFooterRows, rdgAllowQuickFilter]
FooterColor = clYellow FooterColor = clYellow
FooterRowCount = 1 FooterRowCount = 1
@ -140,7 +141,6 @@ object Form1: TForm1
GridLineStyle = psSolid GridLineStyle = psSolid
DataSource = DataSource1 DataSource = DataSource1
Options = [dgEditing, dgTitles, dgIndicator, dgColumnResize, dgColumnMove, dgColLines, dgRowLines, dgAlwaysShowSelection, dgConfirmDelete, dgCancelOnExit] Options = [dgEditing, dgTitles, dgIndicator, dgColumnResize, dgColumnMove, dgColLines, dgRowLines, dgAlwaysShowSelection, dgConfirmDelete, dgCancelOnExit]
ParentColor = False
ReadOnly = True ReadOnly = True
TabOrder = 0 TabOrder = 0
end end

View File

@ -5,7 +5,7 @@ unit Unit1;
interface interface
uses uses
Classes, SysUtils, FileUtil, fbcustomdataset, uib, rxdbgrid, rxmemds, Forms, Classes, SysUtils, FileUtil, rxdbgrid, rxmemds, Forms,
Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, db; Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, db;
type type
@ -24,10 +24,10 @@ type
RxMemoryData1NAME: TStringField; RxMemoryData1NAME: TStringField;
procedure CheckBox1Change(Sender: TObject); procedure CheckBox1Change(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure RxDBGrid1CalcRowHeight(Sender: TRxDBGrid; var ARowHegth: integer);
private private
procedure FillTestDatabase; procedure FillTestDatabase;
public public
end; end;
var var
@ -54,6 +54,13 @@ begin
FillTestDatabase; FillTestDatabase;
end; end;
procedure TForm1.RxDBGrid1CalcRowHeight(Sender: TRxDBGrid;
var ARowHegth: integer);
begin
if RxMemoryData1ID.AsInteger mod 10 = 0 then
ARowHegth:=ARowHegth + 1;
end;
procedure TForm1.FillTestDatabase; procedure TForm1.FillTestDatabase;
var var
F:TextFile; F:TextFile;

View File

@ -72,6 +72,8 @@ type
Cell: TGridCoord; Column: TRxColumn; var HintStr: string; Cell: TGridCoord; Column: TRxColumn; var HintStr: string;
var Processed: boolean) of object; var Processed: boolean) of object;
TRxDBGridCalcRowHeight = procedure(Sender: TRxDBGrid; var ARowHegth:integer) of object;
//Freeman35 added //Freeman35 added
TOnRxCalcFooterValues = procedure(Sender: TObject; Column: TRxColumn; var AValue : Variant) of object; TOnRxCalcFooterValues = procedure(Sender: TObject; Column: TRxColumn; var AValue : Variant) of object;
TOnRxColumnFooterDraw = procedure(Sender: TObject; ABrush: TBrush; AFont : TFont; TOnRxColumnFooterDraw = procedure(Sender: TObject; ABrush: TBrush; AFont : TFont;
@ -614,6 +616,7 @@ type
FColumnDefValues: TRxDBGridColumnDefValues; FColumnDefValues: TRxDBGridColumnDefValues;
FFooterOptions: TRxDBGridFooterOptions; FFooterOptions: TRxDBGridFooterOptions;
FOnCalcRowHeight: TRxDBGridCalcRowHeight;
FSearchOptions: TRxDBGridSearchOptions; FSearchOptions: TRxDBGridSearchOptions;
FSortColumns: TRxDbGridColumnsSortList; FSortColumns: TRxDbGridColumnsSortList;
FSortingNow:Boolean; FSortingNow:Boolean;
@ -805,7 +808,6 @@ type
procedure DoEditorShow; override; procedure DoEditorShow; override;
property Editor; property Editor;
//procedure UpdateActive; override;
public public
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
@ -861,6 +863,7 @@ type
property KeyStrokes: TRxDBGridKeyStrokes read FKeyStrokes write SetKeyStrokes; property KeyStrokes: TRxDBGridKeyStrokes read FKeyStrokes write SetKeyStrokes;
property FooterOptions:TRxDBGridFooterOptions read FFooterOptions write SetFooterOptions; property FooterOptions:TRxDBGridFooterOptions read FFooterOptions write SetFooterOptions;
property SearchOptions:TRxDBGridSearchOptions read FSearchOptions write SetSearchOptions; property SearchOptions:TRxDBGridSearchOptions read FSearchOptions write SetSearchOptions;
property OnCalcRowHeight:TRxDBGridCalcRowHeight read FOnCalcRowHeight write FOnCalcRowHeight;
//storage //storage
property PropertyStorage: TCustomPropertyStorage read GetPropertyStorage write SetPropertyStorage; property PropertyStorage: TCustomPropertyStorage read GetPropertyStorage write SetPropertyStorage;
@ -3336,7 +3339,7 @@ end;
function TRxDBGrid.UpdateRowsHeight: integer; function TRxDBGrid.UpdateRowsHeight: integer;
var var
i, J, H, H1, H2{, YT, YB}:integer; i, J, H, H1, H2:integer;
F:TField; F:TField;
S:string; S:string;
CurActiveRecord: Integer; CurActiveRecord: Integer;
@ -3349,7 +3352,7 @@ begin
CurActiveRecord:=DataLink.ActiveRecord; CurActiveRecord:=DataLink.ActiveRecord;
H2:=0; H2:=0;
// YB:=-1;
for i:=GCache.VisibleGrid.Top to GCache.VisibleGrid.Bottom do for i:=GCache.VisibleGrid.Top to GCache.VisibleGrid.Bottom do
begin begin
DataLink.ActiveRecord:=i - FixedRows; DataLink.ActiveRecord:=i - FixedRows;
@ -3376,22 +3379,14 @@ begin
if i<RowCount then if i<RowCount then
begin begin
if Assigned(FOnCalcRowHeight) then
FOnCalcRowHeight(Self, H);
RowHeights[i] := GetDefaultRowHeight * H; RowHeights[i] := GetDefaultRowHeight * H;
H2:=H2 + RowHeights[i]; H2:=H2 + RowHeights[i];
if H2<=ClientHeight then if H2<=ClientHeight then
Inc(Result); Inc(Result);
end; end;
{ if DataLink.ActiveRecord = CurActiveRecord then
ColRowToOffSet(False,True, I, YT, YB);}
end; end;
(*
if (YB > -1) and (YB > GCache.VisibleGrid.BottomRight.Y) then
begin
{ Datalink.mo;
GCache.VisibleGrid.Top:=GCache.VisibleGrid.Top + 1;}
end;
*)
DataLink.ActiveRecord:=CurActiveRecord; DataLink.ActiveRecord:=CurActiveRecord;
end; end;