You've already forked lazarus-ccr
RxFPC: RxDBGrid - for collumn footer add property Footers
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4216 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -59,10 +59,9 @@
|
||||
<Unit0>
|
||||
<Filename Value="RxDBGridDemo.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<EditorIndex Value="4"/>
|
||||
<EditorIndex Value="-1"/>
|
||||
<CursorPos X="47" Y="18"/>
|
||||
<UsageCount Value="100"/>
|
||||
<Loaded Value="True"/>
|
||||
<UsageCount Value="103"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<Filename Value="rxdbgridmainunit.pas"/>
|
||||
@ -72,8 +71,9 @@
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="RxDBGridMainUnit"/>
|
||||
<IsVisibleTab Value="True"/>
|
||||
<CursorPos X="7" Y="9"/>
|
||||
<UsageCount Value="100"/>
|
||||
<TopLine Value="241"/>
|
||||
<CursorPos X="29" Y="263"/>
|
||||
<UsageCount Value="103"/>
|
||||
<Loaded Value="True"/>
|
||||
<LoadedDesigner Value="True"/>
|
||||
</Unit1>
|
||||
@ -98,9 +98,9 @@
|
||||
<Unit5>
|
||||
<Filename Value="../../rxdbgrid.pas"/>
|
||||
<EditorIndex Value="1"/>
|
||||
<TopLine Value="59"/>
|
||||
<CursorPos X="102" Y="78"/>
|
||||
<UsageCount Value="17"/>
|
||||
<TopLine Value="4051"/>
|
||||
<CursorPos X="135" Y="4080"/>
|
||||
<UsageCount Value="18"/>
|
||||
<Bookmarks Count="2">
|
||||
<Item0 Y="2573" ID="2"/>
|
||||
<Item1 Y="3776" ID="1"/>
|
||||
@ -353,12 +353,10 @@
|
||||
<ComponentName Value="rxDBGridFindForm"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<EditorIndex Value="2"/>
|
||||
<EditorIndex Value="-1"/>
|
||||
<TopLine Value="148"/>
|
||||
<CursorPos Y="179"/>
|
||||
<UsageCount Value="10"/>
|
||||
<Loaded Value="True"/>
|
||||
<LoadedDesigner Value="True"/>
|
||||
</Unit45>
|
||||
<Unit46>
|
||||
<Filename Value="../../rxtoolbar.pas"/>
|
||||
@ -802,110 +800,25 @@
|
||||
</Unit115>
|
||||
<Unit116>
|
||||
<Filename Value="../../dbutils.pas"/>
|
||||
<EditorIndex Value="3"/>
|
||||
<TopLine Value="432"/>
|
||||
<EditorIndex Value="-1"/>
|
||||
<TopLine Value="465"/>
|
||||
<CursorPos Y="503"/>
|
||||
<UsageCount Value="10"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit116>
|
||||
</Units>
|
||||
<JumpHistory Count="24" HistoryIndex="23">
|
||||
<JumpHistory Count="3" HistoryIndex="2">
|
||||
<Position1>
|
||||
<Filename Value="../../rxdbgrid_findunit.pas"/>
|
||||
<Caret Line="150" Column="57" TopLine="116"/>
|
||||
</Position1>
|
||||
<Position2>
|
||||
<Filename Value="../../rxdbgrid_findunit.pas"/>
|
||||
<Caret Line="129" Column="62" TopLine="115"/>
|
||||
</Position2>
|
||||
<Position3>
|
||||
<Filename Value="../../rxdbgrid_findunit.pas"/>
|
||||
<Caret Line="150" TopLine="119"/>
|
||||
</Position3>
|
||||
<Position4>
|
||||
<Filename Value="../../dbutils.pas"/>
|
||||
<Caret Line="442" TopLine="423"/>
|
||||
</Position4>
|
||||
<Position5>
|
||||
<Filename Value="../../dbutils.pas"/>
|
||||
<Caret Line="443" TopLine="423"/>
|
||||
</Position5>
|
||||
<Position6>
|
||||
<Filename Value="../../dbutils.pas"/>
|
||||
<Caret Line="445" TopLine="423"/>
|
||||
</Position6>
|
||||
<Position7>
|
||||
<Filename Value="../../dbutils.pas"/>
|
||||
<Caret Line="446" TopLine="423"/>
|
||||
</Position7>
|
||||
<Position8>
|
||||
<Filename Value="../../dbutils.pas"/>
|
||||
<Caret Line="448" TopLine="423"/>
|
||||
</Position8>
|
||||
<Position9>
|
||||
<Filename Value="../../dbutils.pas"/>
|
||||
<Caret Line="449" TopLine="423"/>
|
||||
</Position9>
|
||||
<Position10>
|
||||
<Filename Value="../../dbutils.pas"/>
|
||||
<Caret Line="450" TopLine="423"/>
|
||||
</Position10>
|
||||
<Position11>
|
||||
<Filename Value="../../dbutils.pas"/>
|
||||
<Caret Line="451" TopLine="423"/>
|
||||
</Position11>
|
||||
<Position12>
|
||||
<Filename Value="../../dbutils.pas"/>
|
||||
<Caret Line="453" TopLine="423"/>
|
||||
</Position12>
|
||||
<Position13>
|
||||
<Filename Value="../../dbutils.pas"/>
|
||||
<Caret Line="455" TopLine="435"/>
|
||||
</Position13>
|
||||
<Position14>
|
||||
<Filename Value="../../dbutils.pas"/>
|
||||
<Caret Line="430" TopLine="411"/>
|
||||
</Position14>
|
||||
<Position15>
|
||||
<Filename Value="../../dbutils.pas"/>
|
||||
<Caret Line="431" TopLine="411"/>
|
||||
</Position15>
|
||||
<Position16>
|
||||
<Filename Value="../../dbutils.pas"/>
|
||||
<Caret Line="432" TopLine="411"/>
|
||||
</Position16>
|
||||
<Position17>
|
||||
<Filename Value="../../dbutils.pas"/>
|
||||
<Caret Line="395" TopLine="378"/>
|
||||
</Position17>
|
||||
<Position18>
|
||||
<Filename Value="../../dbutils.pas"/>
|
||||
<Caret Line="396" TopLine="378"/>
|
||||
</Position18>
|
||||
<Position19>
|
||||
<Filename Value="../../rxdbgrid_findunit.pas"/>
|
||||
<Caret Line="150" TopLine="119"/>
|
||||
</Position19>
|
||||
<Position20>
|
||||
<Filename Value="../../dbutils.pas"/>
|
||||
<Caret Line="499" TopLine="468"/>
|
||||
</Position20>
|
||||
<Position21>
|
||||
<Filename Value="../../dbutils.pas"/>
|
||||
<Caret Line="500" Column="18" TopLine="469"/>
|
||||
</Position21>
|
||||
<Position22>
|
||||
<Filename Value="../../dbutils.pas"/>
|
||||
<Caret Line="502" TopLine="470"/>
|
||||
</Position22>
|
||||
<Position23>
|
||||
<Filename Value="../../rxdbgrid_findunit.pas"/>
|
||||
<Caret Line="170" Column="3" TopLine="148"/>
|
||||
</Position23>
|
||||
<Position24>
|
||||
<Filename Value="../../rxdbgrid.pas"/>
|
||||
<Caret Line="518" Column="3" TopLine="441"/>
|
||||
</Position24>
|
||||
</Position1>
|
||||
<Position2>
|
||||
<Filename Value="rxdbgridmainunit.pas"/>
|
||||
<Caret Line="18" Column="143"/>
|
||||
</Position2>
|
||||
<Position3>
|
||||
<Filename Value="rxdbgridmainunit.pas"/>
|
||||
<Caret Line="274" Column="3" TopLine="242"/>
|
||||
</Position3>
|
||||
</JumpHistory>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
|
@ -37,6 +37,7 @@ object RxDBGridMainForm: TRxDBGridMainForm
|
||||
Filter.EmptyValue = '(Нет)'
|
||||
Filter.EmptyFont.Style = [fsItalic]
|
||||
Filter.ItemIndex = -1
|
||||
Footers = <>
|
||||
ImageList = ImageList1
|
||||
KeyList.Strings = (
|
||||
'1=0'
|
||||
@ -63,6 +64,7 @@ object RxDBGridMainForm: TRxDBGridMainForm
|
||||
Footer.Alignment = taRightJustify
|
||||
Footer.DisplayFormat = 'Count: %d'
|
||||
Footer.ValueType = fvtCount
|
||||
Footers = <>
|
||||
end
|
||||
item
|
||||
Title.Alignment = taCenter
|
||||
@ -80,12 +82,13 @@ object RxDBGridMainForm: TRxDBGridMainForm
|
||||
Filter.EmptyValue = '(Нет)'
|
||||
Filter.EmptyFont.Style = [fsItalic]
|
||||
Filter.ItemIndex = -1
|
||||
Footer.Value = 'This is test'#10'Line2'
|
||||
Footer.Value = 'This is test'
|
||||
Footer.ValueType = fvtStaticText
|
||||
Footer.Font.Color = clRed
|
||||
Footer.Font.Height = -15
|
||||
Footer.Font.Name = 'Liberation Mono'
|
||||
Footer.Font.Style = [fsBold, fsItalic]
|
||||
Footers = <>
|
||||
Options = [coCustomizeVisible, coCustomizeWidth, coDisableDialogFind]
|
||||
end
|
||||
item
|
||||
@ -103,6 +106,7 @@ object RxDBGridMainForm: TRxDBGridMainForm
|
||||
Filter.EmptyValue = '(Нет)'
|
||||
Filter.EmptyFont.Style = [fsItalic]
|
||||
Filter.ItemIndex = -1
|
||||
Footers = <>
|
||||
WordWrap = True
|
||||
end
|
||||
item
|
||||
@ -135,11 +139,22 @@ object RxDBGridMainForm: TRxDBGridMainForm
|
||||
Filter.EmptyFont.Style = [fsItalic]
|
||||
Filter.ItemIndex = -1
|
||||
Footer.Alignment = taRightJustify
|
||||
Footer.DisplayFormat = '#,##0.00'
|
||||
Footer.FieldName = 'PRICE'
|
||||
Footer.ValueType = fvtSum
|
||||
Footer.Font.Color = clPurple
|
||||
Footer.Font.Style = [fsBold, fsItalic]
|
||||
Footers = <
|
||||
item
|
||||
Alignment = taRightJustify
|
||||
DisplayFormat = '#,##0.00'
|
||||
FieldName = 'PRICE'
|
||||
ValueType = fvtMin
|
||||
end
|
||||
item
|
||||
Alignment = taRightJustify
|
||||
DisplayFormat = '#,##0.00'
|
||||
FieldName = 'PRICE'
|
||||
ValueType = fvtSum
|
||||
end>
|
||||
end
|
||||
item
|
||||
Title.Alignment = taCenter
|
||||
@ -155,6 +170,7 @@ object RxDBGridMainForm: TRxDBGridMainForm
|
||||
Filter.EmptyValue = '(Нет)'
|
||||
Filter.EmptyFont.Style = [fsItalic]
|
||||
Filter.ItemIndex = -1
|
||||
Footers = <>
|
||||
end
|
||||
item
|
||||
Title.Alignment = taCenter
|
||||
@ -170,6 +186,7 @@ object RxDBGridMainForm: TRxDBGridMainForm
|
||||
Filter.EmptyValue = '(Нет)'
|
||||
Filter.EmptyFont.Style = [fsItalic]
|
||||
Filter.ItemIndex = -1
|
||||
Footers = <>
|
||||
end
|
||||
item
|
||||
ButtonStyle = cbsPickList
|
||||
@ -225,6 +242,7 @@ object RxDBGridMainForm: TRxDBGridMainForm
|
||||
Filter.EmptyValue = '(Нет)'
|
||||
Filter.EmptyFont.Style = [fsItalic]
|
||||
Filter.ItemIndex = -1
|
||||
Footers = <>
|
||||
end>
|
||||
KeyStrokes = <
|
||||
item
|
||||
|
@ -80,13 +80,18 @@ type
|
||||
|
||||
procedure TRxDBGridFooterFieldProperty.FillValues(const Values: TStringList);
|
||||
var
|
||||
Footer: TRxColumnFooter;
|
||||
Grid: TRxDBGrid;
|
||||
DataSource: TDataSource;
|
||||
begin
|
||||
Footer:=TRxColumnFooter(GetComponent(0));
|
||||
Grid:=TRxDBGrid(Footer.Owner.Grid);
|
||||
if GetComponent(0) is TRxColumnFooterItem then
|
||||
Grid:=TRxDBGrid(TRxColumnFooterItem(GetComponent(0)).Owner.Grid)
|
||||
else
|
||||
(* if GetComponent(0) is TRxColumnFooter then
|
||||
Grid:=TRxDBGrid(TRxColumnFooter(GetComponent(0)).Owner.Grid)
|
||||
else *)
|
||||
exit;
|
||||
if not (Grid is TRxDBGrid) then exit;
|
||||
|
||||
DataSource := Grid.DataSource;
|
||||
if Assigned(DataSource) and Assigned(DataSource.DataSet) then
|
||||
DataSource.DataSet.GetFieldNames(Values);
|
||||
@ -163,7 +168,8 @@ begin
|
||||
|
||||
//
|
||||
RegisterPropertyEditor(TypeInfo(string), TRxColumn, 'FieldName', TRxDBGridFieldProperty);
|
||||
RegisterPropertyEditor(TypeInfo(string), TRxColumnFooter, 'FieldName', TRxDBGridFooterFieldProperty);
|
||||
(* RegisterPropertyEditor(TypeInfo(string), TRxColumnFooter, 'FieldName', TRxDBGridFooterFieldProperty); *)
|
||||
RegisterPropertyEditor(TypeInfo(string), TRxColumnFooterItem, 'FieldName', TRxDBGridFooterFieldProperty);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
@ -252,7 +252,7 @@ type
|
||||
end;
|
||||
|
||||
{ TRxColumnFooter }
|
||||
|
||||
(*
|
||||
TRxColumnFooter = class(TPersistent)
|
||||
private
|
||||
FIsDefaultFont: boolean;
|
||||
@ -309,7 +309,79 @@ type
|
||||
property ValueType: TFooterValueType read FValueType write SetValueType default fvtNon;
|
||||
property Font: TFont read GetFont write SetFont stored IsFontStored;
|
||||
end;
|
||||
*)
|
||||
{ TRxColumnFooterItem }
|
||||
|
||||
TRxColumnFooterItem = class(TCollectionItem)
|
||||
private
|
||||
FIsDefaultFont: boolean;
|
||||
FLayout: TTextLayout;
|
||||
FOwner: TRxColumn;
|
||||
FAlignment: TAlignment;
|
||||
FDisplayFormat: string;
|
||||
FFieldName: string;
|
||||
FField:TField;
|
||||
FFont: TFont;
|
||||
FValue: string;
|
||||
FValueType: TFooterValueType;
|
||||
FTestValue: double;
|
||||
FCountRec:integer;
|
||||
procedure FontChanged(Sender: TObject);
|
||||
function GetFont: TFont;
|
||||
function IsFontStored: Boolean;
|
||||
procedure SetAlignment(AValue: TAlignment);
|
||||
procedure SetDisplayFormat(AValue: string);
|
||||
procedure SetFieldName(AValue: string);
|
||||
procedure SetFont(AValue: TFont);
|
||||
procedure SetLayout(AValue: TTextLayout);
|
||||
procedure SetValue(AValue: string);
|
||||
procedure SetValueType(AValue: TFooterValueType);
|
||||
|
||||
function GetFieldValue: string;
|
||||
function GetRecordsCount: string;
|
||||
function GetRecNo: string;
|
||||
function GetStatTotal: string;
|
||||
procedure ResetTestValue;
|
||||
procedure UpdateTestValue;
|
||||
|
||||
function DeleteTestValue: boolean;
|
||||
function PostTestValue: boolean;
|
||||
function ErrorTestValue: boolean;
|
||||
protected
|
||||
procedure UpdateTestValueFromVar(AValue:Variant);
|
||||
property IsDefaultFont: boolean read FIsDefaultFont;
|
||||
public
|
||||
constructor Create(ACollection: TCollection); override;
|
||||
destructor Destroy; override;
|
||||
function DisplayText: string;
|
||||
procedure FillDefaultFont;
|
||||
|
||||
property Owner: TRxColumn read FOwner;
|
||||
property NumericValue: double read FTestValue;
|
||||
property CountRec:integer read FCountRec;
|
||||
published
|
||||
property Alignment: TAlignment read FAlignment write SetAlignment default taLeftJustify;
|
||||
property Layout: TTextLayout read FLayout write SetLayout default tlCenter;
|
||||
property DisplayFormat: string read FDisplayFormat write SetDisplayFormat;
|
||||
property FieldName: string read FFieldName write SetFieldName;
|
||||
property Value: string read FValue write SetValue;
|
||||
property ValueType: TFooterValueType read FValueType write SetValueType default fvtNon;
|
||||
property Font: TFont read GetFont write SetFont stored IsFontStored;
|
||||
end;
|
||||
|
||||
{ TRxColumnFooterItems }
|
||||
|
||||
TRxColumnFooterItems = class(TOwnedCollection)
|
||||
private
|
||||
function GetItem(Index: integer): TRxColumnFooterItem;
|
||||
procedure SetItem(Index: integer; const AValue: TRxColumnFooterItem);
|
||||
protected
|
||||
procedure Update(Item: TCollectionItem); override;
|
||||
public
|
||||
constructor Create(AOwner: TPersistent);
|
||||
public
|
||||
property Items[Index: integer]: TRxColumnFooterItem read GetItem write SetItem; default;
|
||||
end;
|
||||
|
||||
{ TRxFilterItem }
|
||||
|
||||
@ -426,7 +498,8 @@ type
|
||||
private
|
||||
FDirectInput: boolean;
|
||||
FEditButtons: TRxColumnEditButtons;
|
||||
FFooter: TRxColumnFooter;
|
||||
(* FFooter: TRxColumnFooter; *)
|
||||
FFooter: TRxColumnFooterItem;
|
||||
FConstraints:TRxDBGridCollumnConstraints;
|
||||
FFilter: TRxColumnFilter;
|
||||
FImageList: TImageList;
|
||||
@ -438,14 +511,19 @@ type
|
||||
FSortOrder: TSortMarker;
|
||||
FSortPosition: integer;
|
||||
FWordWrap: boolean;
|
||||
FFooters: TRxColumnFooterItems;
|
||||
function GetConstraints: TRxDBGridCollumnConstraints;
|
||||
function GetFooter: TRxColumnFooter;
|
||||
(* function GetFooter: TRxColumnFooter; *)
|
||||
function GetFooter: TRxColumnFooterItem;
|
||||
function GetFooters: TRxColumnFooterItems;
|
||||
function GetKeyList: TStrings;
|
||||
function GetSortFields:string;
|
||||
procedure SetConstraints(AValue: TRxDBGridCollumnConstraints);
|
||||
procedure SetEditButtons(AValue: TRxColumnEditButtons);
|
||||
procedure SetFilter(const AValue: TRxColumnFilter);
|
||||
procedure SetFooter(const AValue: TRxColumnFooter);
|
||||
(* procedure SetFooter(const AValue: TRxColumnFooter); *)
|
||||
procedure SetFooter(const AValue: TRxColumnFooterItem);
|
||||
procedure SetFooters(AValue: TRxColumnFooterItems);
|
||||
procedure SetImageList(const AValue: TImageList);
|
||||
procedure SetKeyList(const AValue: TStrings);
|
||||
procedure SetNotInKeyListIndex(const AValue: integer);
|
||||
@ -464,7 +542,9 @@ type
|
||||
property DirectInput : boolean read FDirectInput write FDirectInput default true;
|
||||
property EditButtons:TRxColumnEditButtons read FEditButtons write SetEditButtons;
|
||||
property Filter: TRxColumnFilter read FFilter write SetFilter;
|
||||
property Footer: TRxColumnFooter read GetFooter write SetFooter;
|
||||
(* property Footer: TRxColumnFooter read GetFooter write SetFooter; *)
|
||||
property Footer: TRxColumnFooterItem read GetFooter write SetFooter;
|
||||
property Footers: TRxColumnFooterItems read GetFooters write SetFooters;
|
||||
property ImageList: TImageList read FImageList write SetImageList;
|
||||
property KeyList: TStrings read GetKeyList write SetKeyList;
|
||||
property NotInKeyListIndex: integer read FNotInKeyListIndex write SetNotInKeyListIndex default -1;
|
||||
@ -1019,6 +1099,447 @@ type
|
||||
procedure EditingDone; override;
|
||||
end;
|
||||
|
||||
{ TRxColumnFooterItem }
|
||||
|
||||
procedure TRxColumnFooterItem.FontChanged(Sender: TObject);
|
||||
begin
|
||||
FisDefaultFont := False;
|
||||
FOwner.ColumnChanged;
|
||||
end;
|
||||
|
||||
function TRxColumnFooterItem.GetFont: TFont;
|
||||
begin
|
||||
Result := FFont;
|
||||
end;
|
||||
|
||||
function TRxColumnFooterItem.IsFontStored: Boolean;
|
||||
begin
|
||||
Result := not FisDefaultFont;
|
||||
end;
|
||||
|
||||
procedure TRxColumnFooterItem.SetAlignment(AValue: TAlignment);
|
||||
begin
|
||||
if FAlignment = AValue then exit;
|
||||
FAlignment := AValue;
|
||||
FOwner.ColumnChanged;
|
||||
end;
|
||||
|
||||
procedure TRxColumnFooterItem.SetDisplayFormat(AValue: string);
|
||||
begin
|
||||
if FDisplayFormat=AValue then Exit;
|
||||
FDisplayFormat:=AValue;
|
||||
FOwner.ColumnChanged;
|
||||
end;
|
||||
|
||||
procedure TRxColumnFooterItem.SetFieldName(AValue: string);
|
||||
begin
|
||||
if FFieldName=AValue then Exit;
|
||||
FFieldName:=AValue;
|
||||
FOwner.ColumnChanged;
|
||||
end;
|
||||
|
||||
procedure TRxColumnFooterItem.SetFont(AValue: TFont);
|
||||
begin
|
||||
if not FFont.IsEqual(AValue) then
|
||||
FFont.Assign(AValue);
|
||||
end;
|
||||
|
||||
procedure TRxColumnFooterItem.SetLayout(AValue: TTextLayout);
|
||||
begin
|
||||
if FLayout=AValue then Exit;
|
||||
FLayout:=AValue;
|
||||
FOwner.ColumnChanged;
|
||||
end;
|
||||
|
||||
procedure TRxColumnFooterItem.SetValue(AValue: string);
|
||||
begin
|
||||
if FValue=AValue then Exit;
|
||||
FValue:=AValue;
|
||||
FOwner.ColumnChanged;
|
||||
end;
|
||||
|
||||
procedure TRxColumnFooterItem.SetValueType(AValue: TFooterValueType);
|
||||
begin
|
||||
if FValueType=AValue then Exit;
|
||||
FValueType:=AValue;
|
||||
FOwner.ColumnChanged;
|
||||
end;
|
||||
|
||||
function TRxColumnFooterItem.GetFieldValue: string;
|
||||
begin
|
||||
if (FFieldName <> '') and TRxDBGrid(FOwner.Grid).DatalinkActive then
|
||||
Result := TRxDBGrid(FOwner.Grid).DataSource.DataSet.FieldByName(FFieldName).AsString
|
||||
else
|
||||
Result := '';
|
||||
end;
|
||||
|
||||
function TRxColumnFooterItem.GetRecordsCount: string;
|
||||
begin
|
||||
if TRxDBGrid(FOwner.Grid).DatalinkActive then
|
||||
begin
|
||||
if DisplayFormat <> '' then
|
||||
Result := Format(DisplayFormat,
|
||||
[{TRxDBGrid(FOwner.Grid).DataSource.DataSet.RecordCount} FCountRec])
|
||||
else
|
||||
Result := IntToStr(FCountRec); //TRxDBGrid(FOwner.Grid).DataSource.DataSet.RecordCount);
|
||||
end
|
||||
else
|
||||
Result := '';
|
||||
end;
|
||||
|
||||
function TRxColumnFooterItem.GetRecNo: string;
|
||||
begin
|
||||
if TRxDBGrid(FOwner.Grid).DatalinkActive then
|
||||
begin
|
||||
if DisplayFormat <> '' then
|
||||
Result := Format(DisplayFormat, [TRxDBGrid(FOwner.Grid).DataSource.DataSet.RecNo])
|
||||
else
|
||||
Result := IntToStr(TRxDBGrid(FOwner.Grid).DataSource.DataSet.RecNo);
|
||||
end
|
||||
else
|
||||
Result := '';
|
||||
end;
|
||||
|
||||
function TRxColumnFooterItem.GetStatTotal: string;
|
||||
var
|
||||
F: TField;
|
||||
begin
|
||||
if (FFieldName <> '') and TRxDBGrid(FOwner.Grid).DatalinkActive and
|
||||
(TRxDBGrid(FOwner.Grid).DataSource.DataSet.RecordCount <> 0) then
|
||||
begin
|
||||
F := TRxDBGrid(FOwner.Grid).DataSource.DataSet.FieldByName(FFieldName);
|
||||
if Assigned(F) then
|
||||
begin
|
||||
if F.DataType in [ftSmallint, ftInteger, ftWord, ftFloat, ftCurrency,
|
||||
ftDate, ftTime, ftDateTime, ftTimeStamp, ftLargeint, ftBCD] then
|
||||
begin
|
||||
if F.DataType in [ftDate, ftTime, ftDateTime, ftTimeStamp] then
|
||||
begin
|
||||
if FValueType in [fvtSum, fvtAvg] then
|
||||
Result := ''
|
||||
else
|
||||
if FTestValue = 0 then
|
||||
Result := ''
|
||||
else
|
||||
if FDisplayFormat = '' then
|
||||
Result := DateToStr(FTestValue)
|
||||
else
|
||||
Result := FormatDateTime(FDisplayFormat, FTestValue);
|
||||
end
|
||||
else
|
||||
if F.DataType in [ftSmallint, ftInteger, ftWord, ftLargeint] then
|
||||
begin
|
||||
if FDisplayFormat = '' then
|
||||
Result := IntToStr(Round(FTestValue))
|
||||
else
|
||||
Result := Format(FDisplayFormat, [Round(FTestValue)]);
|
||||
end
|
||||
else
|
||||
begin
|
||||
if FDisplayFormat <> '' then
|
||||
Result := FormatFloat(FDisplayFormat, FTestValue)
|
||||
else
|
||||
if F.DataType = ftCurrency then
|
||||
Result := FloatToStrF(FTestValue, ffCurrency, 12, 2)
|
||||
else
|
||||
Result := FloatToStr(FTestValue);
|
||||
end;
|
||||
end
|
||||
else
|
||||
Result := '';
|
||||
end
|
||||
else
|
||||
Result := '';
|
||||
end
|
||||
else
|
||||
Result := '';
|
||||
end;
|
||||
|
||||
procedure TRxColumnFooterItem.ResetTestValue;
|
||||
var
|
||||
F: TField;
|
||||
begin
|
||||
FTestValue := 0;
|
||||
FCountRec:=0;
|
||||
|
||||
if (ValueType in [fvtMin, fvtMax]) and (TRxDBGrid(
|
||||
FOwner.Grid).DataSource.DataSet.RecordCount <> 0) then
|
||||
begin
|
||||
F := TRxDBGrid(FOwner.Grid).DataSource.DataSet.FieldByName(FFieldName);
|
||||
if (Assigned(F)) and not (F.IsNull) then
|
||||
if F.DataType in [ftDate, ftTime, ftDateTime, ftTimeStamp] then
|
||||
FTestValue := F.AsDateTime
|
||||
else
|
||||
FTestValue := F.AsFloat;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TRxColumnFooterItem.UpdateTestValue;
|
||||
var
|
||||
F: TField;
|
||||
begin
|
||||
if ValueType in [fvtSum, fvtAvg, fvtMax, fvtMin] then
|
||||
begin
|
||||
F := TRxDBGrid(FOwner.Grid).DataSource.DataSet.FindField(FFieldName);
|
||||
if Assigned(F) then
|
||||
begin
|
||||
if F.DataType in [ftDate, ftTime, ftDateTime, ftTimeStamp] then
|
||||
begin
|
||||
case FValueType of
|
||||
fvtMax: FTestValue := Max(FTestValue, F.AsDateTime);
|
||||
fvtMin: FTestValue := Min(FTestValue, F.AsDateTime);
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
case FValueType of
|
||||
fvtSum: FTestValue := FTestValue + F.AsFloat;
|
||||
// fvtAvg:
|
||||
fvtMax: FTestValue := Max(FTestValue, F.AsFloat);
|
||||
fvtMin: FTestValue := Min(FTestValue, F.AsFloat);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TRxColumnFooterItem.DeleteTestValue: boolean;
|
||||
var
|
||||
F: TField;
|
||||
begin
|
||||
Result := True;
|
||||
if ValueType in [fvtSum, fvtAvg, fvtMax, fvtMin] then
|
||||
begin
|
||||
F := TRxDBGrid(FOwner.Grid).DataSource.DataSet.FieldByName(FFieldName);
|
||||
if (Assigned(F)) and not (F.IsNull) then
|
||||
if F.DataType in [ftDate, ftTime, ftDateTime, ftTimeStamp] then
|
||||
Result := not ((FValueType in [fvtMax, fvtMin]) and (FTestValue = F.AsDateTime))
|
||||
else
|
||||
if FValueType in [fvtMax, fvtMin] then
|
||||
Result := (FTestValue <> F.AsFloat)
|
||||
else
|
||||
FTestValue := FTestValue - F.AsFloat;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TRxColumnFooterItem.PostTestValue: boolean;
|
||||
var
|
||||
F: TField;
|
||||
begin
|
||||
Result := True;
|
||||
if ValueType in [fvtSum, fvtAvg, fvtMax, fvtMin] then
|
||||
begin
|
||||
F := TRxDBGrid(FOwner.Grid).DataSource.DataSet.FieldByName(FFieldName);
|
||||
if Assigned(F) then
|
||||
if F.DataType in [ftDate, ftTime, ftDateTime, ftTimeStamp] then
|
||||
begin
|
||||
if FValueType in [fvtMax, fvtMin] then
|
||||
if F.DataSet.State = dsinsert then
|
||||
begin
|
||||
if not (F.IsNull) then
|
||||
case FValueType of
|
||||
fvtMax: FTestValue := Max(FTestValue, F.AsDateTime);
|
||||
fvtMin: FTestValue := Min(FTestValue, F.AsDateTime);
|
||||
end;
|
||||
end
|
||||
else
|
||||
if (F.OldValue <> null) and (FTestValue = TDateTime(F.OldValue)) then
|
||||
Result := False
|
||||
else
|
||||
if not F.IsNull then
|
||||
case FValueType of
|
||||
fvtMax: FTestValue := Max(FTestValue, F.AsDateTime);
|
||||
fvtMin: FTestValue := Min(FTestValue, F.AsDateTime);
|
||||
end;
|
||||
end
|
||||
else
|
||||
if F.DataSet.State = dsinsert then
|
||||
begin
|
||||
if not F.IsNull then
|
||||
case FValueType of
|
||||
fvtSum: FTestValue := FTestValue + F.AsFloat;
|
||||
fvtMax: FTestValue := Max(FTestValue, F.AsFloat);
|
||||
fvtMin: FTestValue := Min(FTestValue, F.AsFloat);
|
||||
end;
|
||||
end
|
||||
else
|
||||
if (FValueType in [fvtMax, fvtMin]) and (F.OldValue <> null) and
|
||||
(FTestValue = Float(F.OldValue)) then
|
||||
Result := False
|
||||
else
|
||||
case FValueType of
|
||||
fvtSum:
|
||||
begin
|
||||
if not F.IsNull then
|
||||
begin
|
||||
if F.OldValue <> null then
|
||||
FTestValue := FTestValue - Float(F.OldValue);
|
||||
FTestValue := FTestValue + F.AsFloat;
|
||||
end;
|
||||
end;
|
||||
fvtMax: if not F.IsNull then
|
||||
FTestValue := Max(FTestValue, F.AsFloat);
|
||||
fvtMin: if not F.IsNull then
|
||||
FTestValue := Min(FTestValue, F.AsFloat);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TRxColumnFooterItem.ErrorTestValue: boolean;
|
||||
var
|
||||
F: TField;
|
||||
begin
|
||||
Result := True;
|
||||
if ValueType in [fvtSum, fvtAvg, fvtMax, fvtMin] then
|
||||
begin
|
||||
F := TRxDBGrid(FOwner.Grid).DataSource.DataSet.FieldByName(FFieldName);
|
||||
if Assigned(F) then
|
||||
begin
|
||||
if F.DataType in [ftDate, ftTime, ftDateTime, ftTimeStamp] then
|
||||
begin
|
||||
if (FValueType in [fvtMax, fvtMin]) and not (F.IsNull) then
|
||||
begin
|
||||
if not (F.IsNull) and (FTestValue = F.AsDateTime) then
|
||||
Result := False
|
||||
else
|
||||
if (F.DataSet.RecordCount <> 0) and (F.OldValue <> null) then
|
||||
begin
|
||||
case FValueType of
|
||||
fvtMax: FTestValue := Max(FTestValue, TDateTime(F.OldValue));
|
||||
fvtMin: FTestValue := Min(FTestValue, TDateTime(F.OldValue));
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end
|
||||
else
|
||||
if (FValueType in [fvtMax, fvtMin]) and not (F.IsNull) and (FTestValue = F.AsFloat) then
|
||||
Result := False
|
||||
else
|
||||
begin
|
||||
case FValueType of
|
||||
fvtSum:
|
||||
if F.DataSet.RecordCount = 0 then
|
||||
begin
|
||||
{ if not F.IsNull then
|
||||
FTestValue := FTestValue - F.AsFloat;}
|
||||
{ TODO -oalexs : need rewrite this code - where difficult! }
|
||||
end
|
||||
else
|
||||
begin
|
||||
if F.OldValue <> null then
|
||||
FTestValue := FTestValue + Float(F.OldValue);
|
||||
if not F.IsNull then
|
||||
FTestValue := FTestValue - F.AsFloat;
|
||||
end;
|
||||
fvtMax:
|
||||
if (F.DataSet.RecordCount <> 0) and (F.OldValue <> null) then
|
||||
FTestValue := Max(FTestValue, Float(F.OldValue));
|
||||
fvtMin:
|
||||
if (F.DataSet.RecordCount <> 0) and (F.OldValue <> null) then
|
||||
FTestValue := Min(FTestValue, Float(F.OldValue));
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TRxColumnFooterItem.UpdateTestValueFromVar(AValue: Variant);
|
||||
begin
|
||||
if FValueType in [fvtSum, fvtAvg, fvtMax, fvtMin] then
|
||||
begin
|
||||
if (not VarIsEmpty(AValue)) and (AValue <> null) and Assigned(FField) then
|
||||
begin
|
||||
if FField.DataType in [ftDate, ftTime, ftDateTime, ftTimeStamp] then
|
||||
begin
|
||||
case FValueType of
|
||||
fvtMax: FTestValue := Max(FTestValue, AValue);
|
||||
fvtMin: FTestValue := Min(FTestValue, AValue);
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
case FValueType of
|
||||
fvtSum,
|
||||
fvtAvg: FTestValue := FTestValue + AValue;
|
||||
fvtMax: FTestValue := Max(FTestValue, AValue);
|
||||
fvtMin: FTestValue := Min(FTestValue, AValue);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
constructor TRxColumnFooterItem.Create(ACollection: TCollection);
|
||||
begin
|
||||
inherited Create(ACollection);
|
||||
if Assigned(ACollection) then
|
||||
FOwner := TRxColumn(TRxColumnFooterItems(ACollection).Owner);
|
||||
|
||||
FTestValue := 0;
|
||||
FLayout := tlCenter;
|
||||
|
||||
FFont := TFont.Create;
|
||||
FillDefaultFont;
|
||||
FFont.OnChange := @FontChanged;
|
||||
end;
|
||||
|
||||
destructor TRxColumnFooterItem.Destroy;
|
||||
begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
function TRxColumnFooterItem.DisplayText: string;
|
||||
begin
|
||||
case FValueType of
|
||||
fvtSum,
|
||||
fvtAvg,
|
||||
fvtMax,
|
||||
fvtMin: Result := GetStatTotal;
|
||||
fvtCount: Result := GetRecordsCount;
|
||||
fvtFieldValue: Result := GetFieldValue;
|
||||
fvtStaticText: Result := FValue;
|
||||
fvtRecNo: Result := GetRecNo;
|
||||
else
|
||||
Result := '';
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TRxColumnFooterItem.FillDefaultFont;
|
||||
var
|
||||
AGrid: TCustomGrid;
|
||||
begin
|
||||
if not Assigned(FOwner) then exit;
|
||||
AGrid := FOwner.Grid;
|
||||
if (AGrid<>nil) then
|
||||
begin
|
||||
FFont.Assign(AGrid.Font);
|
||||
FIsDefaultFont := True;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TRxColumnFooterItems }
|
||||
|
||||
function TRxColumnFooterItems.GetItem(Index: integer): TRxColumnFooterItem;
|
||||
begin
|
||||
Result := TRxColumnFooterItem(inherited GetItem(Index));
|
||||
end;
|
||||
|
||||
procedure TRxColumnFooterItems.SetItem(Index: integer;
|
||||
const AValue: TRxColumnFooterItem);
|
||||
begin
|
||||
inherited SetItem(Index, AValue);
|
||||
end;
|
||||
|
||||
procedure TRxColumnFooterItems.Update(Item: TCollectionItem);
|
||||
begin
|
||||
inherited Update(Item);
|
||||
end;
|
||||
|
||||
constructor TRxColumnFooterItems.Create(AOwner: TPersistent);
|
||||
begin
|
||||
inherited Create(AOwner, TRxColumnFooterItem);
|
||||
end;
|
||||
|
||||
{ TRxDBGridAbstractTools }
|
||||
|
||||
procedure TRxDBGridAbstractTools.SetRxDBGrid(AValue: TRxDBGrid);
|
||||
@ -3459,15 +3980,10 @@ var
|
||||
Background: TColor;
|
||||
ClipArea: Trect;
|
||||
TxS: TTextStyle;
|
||||
j: Integer;
|
||||
FItem: TRxColumnFooterItem;
|
||||
begin
|
||||
// TotalWidth := GetClientRect.Right;
|
||||
TotalWidth := GCache.ClientWidth;
|
||||
{
|
||||
if ScrollBarIsVisible(SB_HORZ) then
|
||||
TotalYOffs := GCache.ClientHeight - (GetSystemMetrics(SM_CYHSCROLL) + GetSystemMetrics(SM_SWSCROLLBARSPACING))
|
||||
else
|
||||
TotalYOffs := GCache.ClientHeight;
|
||||
}
|
||||
TotalYOffs := GCache.ClientHeight - (DefaultRowHeight * FFooterOptions.RowCount);
|
||||
|
||||
FooterRect := Rect(0, TotalYOffs, TotalWidth, TotalYOffs + DefaultRowHeight * FFooterOptions.RowCount);
|
||||
@ -3495,6 +4011,13 @@ if ScrollBarIsVisible(SB_HORZ) then
|
||||
Canvas.LineTo(R.Right - 1, RowHeights[0]);
|
||||
end;
|
||||
|
||||
R.Top := TotalYOffs;
|
||||
R.Bottom := TotalYOffs + DefaultRowHeight;
|
||||
// R.Bottom := TotalYOffs + DefaultRowHeight * FFooterOptions.RowCount;
|
||||
|
||||
for j:=0 to FFooterOptions.RowCount-1 do
|
||||
begin
|
||||
|
||||
for i := GCache.VisibleGrid.Left to GCache.VisibleGrid.Right do
|
||||
begin
|
||||
ColRowToOffset(True, True, i, R.Left, R.Right);
|
||||
@ -3510,16 +4033,36 @@ if ScrollBarIsVisible(SB_HORZ) then
|
||||
C := ColumnFromGridColumn(i) as TRxColumn;
|
||||
if Assigned(C) then
|
||||
begin
|
||||
TxS.Alignment := C.Footer.Alignment;
|
||||
TxS.Layout := C.Footer.Layout;
|
||||
FItem:=nil;
|
||||
if (J = 0) then
|
||||
begin
|
||||
if (C.Footers.Count = 0) then
|
||||
FItem:=C.Footer
|
||||
else
|
||||
FItem:=C.Footers[0];
|
||||
end
|
||||
else
|
||||
if J <= C.Footers.Count-1 then
|
||||
FItem:=C.Footers[j];
|
||||
|
||||
if Assigned(FItem) then
|
||||
begin
|
||||
TxS.Alignment := FItem.Alignment;
|
||||
TxS.Layout := FItem.Layout;
|
||||
Canvas.TextStyle := TxS;
|
||||
if not C.Footer.IsDefaultFont then
|
||||
Canvas.Font:=C.Footer.Font
|
||||
if not FItem.IsDefaultFont then
|
||||
Canvas.Font:=FItem.Font
|
||||
else
|
||||
Canvas.Font:=Font;
|
||||
DrawCellText(i, 0, R, [], C.Footer.DisplayText);
|
||||
DrawCellText(i, 0, R, [], FItem.DisplayText);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
R.Top := R.Bottom;
|
||||
R.Bottom := R.Bottom + DefaultRowHeight;
|
||||
end;
|
||||
|
||||
if FDrawFullLine then
|
||||
begin
|
||||
Canvas.MoveTo(FooterRect.Left, FooterRect.Top);
|
||||
@ -3540,7 +4083,6 @@ if ScrollBarIsVisible(SB_HORZ) then
|
||||
end;
|
||||
end;
|
||||
Canvas.Brush.Color := Background;
|
||||
|
||||
end;
|
||||
|
||||
procedure TRxDBGrid.DoTitleClick(ACol: longint; ACollumn: TRxColumn;
|
||||
@ -4339,6 +4881,7 @@ var
|
||||
AValue:Variant;
|
||||
|
||||
FCList:TFPList;
|
||||
j: Integer;
|
||||
begin
|
||||
if (not (FFooterOptions.Active and DatalinkActive)) or (Columns.Count = 0) or (gsAddingAutoColumns in GridStatus) then
|
||||
Exit;
|
||||
@ -4363,6 +4906,15 @@ begin
|
||||
begin
|
||||
APresent := TRxColumn(Columns[i]).Footer.FValueType in
|
||||
[fvtSum, fvtAvg, fvtMax, fvtMin, fvtCount];
|
||||
|
||||
if not APresent then
|
||||
for j:=0 to TRxColumn(Columns[i]).Footers.Count-1 do
|
||||
begin
|
||||
APresent:=TRxColumn(Columns[i]).Footers[j].FValueType in [fvtSum, fvtAvg, fvtMax, fvtMin, fvtCount];
|
||||
if APresent then
|
||||
break;
|
||||
end;
|
||||
|
||||
if APresent then
|
||||
break;
|
||||
end;
|
||||
@ -4375,7 +4927,11 @@ begin
|
||||
|
||||
cnt:=0;
|
||||
for i := 0 to Columns.Count - 1 do
|
||||
begin
|
||||
TRxColumn(Columns[i]).Footer.ResetTestValue;
|
||||
for j:=0 to TRxColumn(Columns[i]).Footers.Count - 1 do
|
||||
TRxColumn(Columns[i]).Footers[j].ResetTestValue;
|
||||
end;
|
||||
|
||||
if (DataSource.DataSet.RecordCount<=0) then
|
||||
begin
|
||||
@ -4412,6 +4968,16 @@ begin
|
||||
FCList.Add(RCol);
|
||||
RCol.Footer.FField:=DHS.FieldByName(RCol.Footer.FieldName);
|
||||
end;
|
||||
|
||||
for j:=0 to RCol.Footers.Count - 1 do
|
||||
begin
|
||||
if (RCol.Footers[j].ValueType in [fvtSum, fvtAvg, fvtMax, fvtMin]) and RCol.Visible then
|
||||
begin
|
||||
if FCList.IndexOf(RCol) < 0 then
|
||||
FCList.Add(RCol);
|
||||
RCol.Footers[j].FField:=DHS.FieldByName(RCol.Footers[j].FieldName);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
DHS.First;
|
||||
@ -4420,10 +4986,14 @@ begin
|
||||
for i:=0 to FCList.Count-1 do
|
||||
begin
|
||||
RCol:=TRxColumn(FCList[i]);
|
||||
if RCol.FFooter.FValueType in [fvtSum, fvtAvg, fvtMax, fvtMin] then
|
||||
RCol.FFooter.UpdateTestValueFromVar( RCol.FFooter.FField.AsVariant)
|
||||
// BB:=RCol.FFooter.FField.AsFloat;
|
||||
// RCol.FFooter.UpdateTestValueFromVar( RCol.FFooter.FField.AsFloat)
|
||||
if (RCol.FFooter.FValueType in [fvtSum, fvtAvg, fvtMax, fvtMin]) and Assigned(RCol.FFooter.FField) then
|
||||
RCol.FFooter.UpdateTestValueFromVar( RCol.FFooter.FField.AsVariant);
|
||||
|
||||
for j:=0 to RCol.FFooters.Count-1 do
|
||||
begin
|
||||
if (RCol.FFooters[j].FValueType in [fvtSum, fvtAvg, fvtMax, fvtMin]) and Assigned(RCol.FFooters[j].FField) then
|
||||
RCol.FFooters[j].UpdateTestValueFromVar( RCol.FFooters[j].FField.AsVariant)
|
||||
end;
|
||||
end;
|
||||
inc(cnt);
|
||||
DHS.Next;
|
||||
@ -4439,6 +5009,15 @@ begin
|
||||
else
|
||||
if RCol.Footer.ValueType = fvtAvg then
|
||||
RCol.FFooter.FTestValue:=RCol.FFooter.FTestValue / Cnt;
|
||||
|
||||
for j:=0 to RCol.Footers.Count-1 do
|
||||
begin
|
||||
if RCol.Footers[j].ValueType = fvtCount then
|
||||
RCol.FFooters[j].FCountRec:=Cnt
|
||||
else
|
||||
if RCol.Footers[j].ValueType = fvtAvg then
|
||||
RCol.FFooters[j].FTestValue:=RCol.FFooter.FTestValue / Cnt;
|
||||
end;
|
||||
end;
|
||||
|
||||
DHS.RecNo := Min(DHL.RecordCount + SavePos - 1, DHS.RecNo);
|
||||
@ -5251,21 +5830,33 @@ begin
|
||||
FFilter.Assign(AValue);
|
||||
end;
|
||||
|
||||
function TRxColumn.GetFooter: TRxColumnFooter;
|
||||
(* function TRxColumn.GetFooter: TRxColumnFooter; *)
|
||||
function TRxColumn.GetFooter: TRxColumnFooterItem;
|
||||
begin
|
||||
Result := FFooter;
|
||||
end;
|
||||
|
||||
function TRxColumn.GetFooters: TRxColumnFooterItems;
|
||||
begin
|
||||
Result:=FFooters;
|
||||
end;
|
||||
|
||||
function TRxColumn.GetConstraints: TRxDBGridCollumnConstraints;
|
||||
begin
|
||||
Result:=FConstraints;
|
||||
end;
|
||||
|
||||
procedure TRxColumn.SetFooter(const AValue: TRxColumnFooter);
|
||||
(* procedure TRxColumn.SetFooter(const AValue: TRxColumnFooter); *)
|
||||
procedure TRxColumn.SetFooter(const AValue: TRxColumnFooterItem);
|
||||
begin
|
||||
FFooter.Assign(AValue);
|
||||
end;
|
||||
|
||||
procedure TRxColumn.SetFooters(AValue: TRxColumnFooterItems);
|
||||
begin
|
||||
FFooters.Assign(AValue);
|
||||
end;
|
||||
|
||||
procedure TRxColumn.SetImageList(const AValue: TImageList);
|
||||
begin
|
||||
if FImageList = AValue then
|
||||
@ -5321,15 +5912,21 @@ begin
|
||||
inherited Create(ACollection);
|
||||
FNotInKeyListIndex := -1;
|
||||
FConstraints:=TRxDBGridCollumnConstraints.Create(Self);
|
||||
FFooter := TRxColumnFooter.Create(Self);
|
||||
(* FFooter := TRxColumnFooter.Create(Self); *)
|
||||
FFooter := TRxColumnFooterItem.Create(nil);
|
||||
FFooter.FOwner:=Self;
|
||||
FFooter.FillDefaultFont;
|
||||
|
||||
FFilter := TRxColumnFilter.Create(Self);
|
||||
FDirectInput := true;
|
||||
FEditButtons:=TRxColumnEditButtons.Create(Self);
|
||||
FOptions:=[coCustomizeVisible, coCustomizeWidth];
|
||||
FFooters:=TRxColumnFooterItems.Create(Self);
|
||||
end;
|
||||
|
||||
destructor TRxColumn.Destroy;
|
||||
begin
|
||||
FreeAndNil(FFooters);
|
||||
FreeAndNil(FEditButtons);
|
||||
if FKeyList <> nil then
|
||||
begin
|
||||
@ -5439,6 +6036,7 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
(*
|
||||
{ TRxColumnFooter }
|
||||
|
||||
procedure TRxColumnFooter.SetValue(const AValue: string);
|
||||
@ -5863,6 +6461,7 @@ begin
|
||||
FreeThenNil(FFont);
|
||||
inherited Destroy;
|
||||
end;
|
||||
*)
|
||||
|
||||
{ TFilterListCellEditor }
|
||||
|
||||
@ -6046,7 +6645,8 @@ begin
|
||||
with Add do
|
||||
Assign(TRxDBGridKeyStrokes(Source)[i]);
|
||||
end;
|
||||
end else
|
||||
end
|
||||
else
|
||||
inherited Assign(Source);
|
||||
end;
|
||||
|
||||
|
@ -24,7 +24,7 @@ Copyright (c) 1998 Master-Bank
|
||||
translate to Lazarus by alexs in 2005 - 2015
|
||||
"/>
|
||||
<License Value="LGPL"/>
|
||||
<Version Major="2" Minor="7" Release="2" Build="159"/>
|
||||
<Version Major="2" Minor="8" Release="1" Build="170"/>
|
||||
<Files Count="72">
|
||||
<Item1>
|
||||
<Filename Value="autopanel.pas"/>
|
||||
|
Reference in New Issue
Block a user