diff --git a/components/rx/exsortfb.pas b/components/rx/exsortfb.pas index 5e97bd5ff..a59b25dc4 100644 --- a/components/rx/exsortfb.pas +++ b/components/rx/exsortfb.pas @@ -71,6 +71,6 @@ begin end; initialization - RegisterRxDBGridSortEngine(TFBDataSetSortEngine, TFBDataSet); + RegisterRxDBGridSortEngine(TFBDataSetSortEngine, 'TFBDataSet'); end. diff --git a/components/rx/exsortzeos.pas b/components/rx/exsortzeos.pas index ce02a434f..1cbde9246 100644 --- a/components/rx/exsortzeos.pas +++ b/components/rx/exsortzeos.pas @@ -5,8 +5,7 @@ unit exsortzeos; interface uses - Classes, SysUtils, DB, RxDBGrid, ZConnection, ZDataset, ZAbstractRODataset, - ZMacroQuery; + Classes, SysUtils, DB, RxDBGrid, ZConnection, ZDataset, ZAbstractDataset, ZAbstractRODataset; type @@ -23,31 +22,13 @@ implementation procedure TZeosDataSetSortEngine.Sort(Field:TField; ADataSet:TDataSet; Asc:boolean; SortOptions:TRxSortEngineOptions); begin if not Assigned(ADataSet) then exit; - if ADataSet.ClassName='TZReadOnlyQuery' then + if ADataSet is TZAbstractDataset then begin - (ADataSet as TZReadOnlyQuery).SortedFields:=Field.FieldName; + TZAbstractDataset(ADataSet).SortedFields:=Field.FieldName; if Asc then - (ADataSet as TZReadOnlyQuery).SortType:=stAscending + TZAbstractDataset(ADataSet).SortType:=stAscending else - (ADataSet as TZReadOnlyQuery).SortType:=stDescending; - end - else - if (ADataSet.ClassName='TZQuery') or (ADataSet is TZMacroQuery) then - begin - (ADataSet as TZQuery).SortedFields:=Field.FieldName; - if Asc then - (ADataSet as TZQuery).SortType:=stAscending - else - (ADataSet as TZQuery).SortType:=stDescending; - end - else - if ADataSet.ClassName='TZTable' then - begin - (ADataSet as TZTable).SortedFields:=Field.FieldName; - if Asc then - (ADataSet as TZTable).SortType:=stAscending - else - (ADataSet as TZTable).SortType:=stDescending; + TZAbstractDataset(ADataSet).SortType:=stDescending; end; end; @@ -83,23 +64,13 @@ begin end; (ADataSet as TZAbstractRODataset).SortedFields:=S; - -{ if ADataSet.ClassName='TZReadOnlyQuery' then - (ADataSet as TZReadOnlyQuery).SortedFields:=S - else - if (ADataSet.ClassName='TZQuery') or (ADataSet is TZMacroQuery) then - (ADataSet as TZQuery).SortedFields:=S - else - if ADataSet.ClassName='TZTable' then - begin - (ADataSet as TZTable).SortedFields:=S} end; initialization - RegisterRxDBGridSortEngine(TZeosDataSetSortEngine, TZReadOnlyQuery); - RegisterRxDBGridSortEngine(TZeosDataSetSortEngine, TZQuery); - RegisterRxDBGridSortEngine(TZeosDataSetSortEngine, TZTable); - RegisterRxDBGridSortEngine(TZeosDataSetSortEngine, TZMacroQuery); + RegisterRxDBGridSortEngine(TZeosDataSetSortEngine, 'TZReadOnlyQuery'); + RegisterRxDBGridSortEngine(TZeosDataSetSortEngine, 'TZQuery'); + RegisterRxDBGridSortEngine(TZeosDataSetSortEngine, 'TZTable'); + RegisterRxDBGridSortEngine(TZeosDataSetSortEngine, 'TZMacroQuery'); end. diff --git a/components/rx/rx_sort_zeos.lpk b/components/rx/rx_sort_zeos.lpk new file mode 100644 index 000000000..6fe9abb36 --- /dev/null +++ b/components/rx/rx_sort_zeos.lpk @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/components/rx/rx_sort_zeos.pas b/components/rx/rx_sort_zeos.pas new file mode 100644 index 000000000..c31e1f1ea --- /dev/null +++ b/components/rx/rx_sort_zeos.pas @@ -0,0 +1,21 @@ +{ This file was automatically created by Lazarus. Do not edit! + This source is only used to compile and install the package. + } + +unit rx_sort_zeos; + +interface + +uses + RxSortZeos, exsortzeos, LazarusPackageIntf; + +implementation + +procedure Register; +begin + RegisterUnit('RxSortZeos', @RxSortZeos.Register); +end; + +initialization + RegisterPackage('rx_sort_zeos', @Register); +end. diff --git a/components/rx/rxdbgrid.pas b/components/rx/rxdbgrid.pas index b91ab64ea..4fd3ee683 100644 --- a/components/rx/rxdbgrid.pas +++ b/components/rx/rxdbgrid.pas @@ -182,8 +182,6 @@ type TRxSortEngineOptions = set of TRxSortEngineOption; TRxDBGridSortEngine = class - private - FDataSetClass: TDataSetClass; public procedure Sort(Field: TField; ADataSet: TDataSet; Asc: boolean; SortOptions: TRxSortEngineOptions); virtual; abstract; procedure SortList(ListField: string; ADataSet: TDataSet; Asc: array of boolean; SortOptions: TRxSortEngineOptions); virtual; @@ -763,7 +761,7 @@ type end; procedure RegisterRxDBGridSortEngine(RxDBGridSortEngineClass: TRxDBGridSortEngineClass; - DataSetClass: TDataSetClass); + DataSetClassName: string); implementation @@ -789,17 +787,16 @@ const var RxDBGridSortEngineList: TStringList; -procedure RegisterRxDBGridSortEngine(RxDBGridSortEngineClass: TRxDBGridSortEngineClass; - DataSetClass: TDataSetClass); +procedure RegisterRxDBGridSortEngine( + RxDBGridSortEngineClass: TRxDBGridSortEngineClass; DataSetClassName: string); var Pos: integer; RxDBGridSortEngine: TRxDBGridSortEngine; begin - if not RxDBGridSortEngineList.Find(DataSetClass.ClassName, Pos) then + if not RxDBGridSortEngineList.Find(DataSetClassName, Pos) then begin RxDBGridSortEngine := RxDBGridSortEngineClass.Create; - RxDBGridSortEngine.FDataSetClass := DataSetClass; - RxDBGridSortEngineList.AddObject(DataSetClass.ClassName, RxDBGridSortEngine); + RxDBGridSortEngineList.AddObject(DataSetClassName, RxDBGridSortEngine); end; end; diff --git a/components/rx/rxsortmemds.pas b/components/rx/rxsortmemds.pas index 4f2d16c02..01cbcd0eb 100644 --- a/components/rx/rxsortmemds.pas +++ b/components/rx/rxsortmemds.pas @@ -66,6 +66,6 @@ begin end; initialization - RegisterRxDBGridSortEngine(TRxMemoryDataSortEngine, TRxMemoryData); + RegisterRxDBGridSortEngine(TRxMemoryDataSortEngine, 'TRxMemoryData'); end. diff --git a/components/rx/rxsortzeos.pas b/components/rx/rxsortzeos.pas new file mode 100644 index 000000000..f34038ee9 --- /dev/null +++ b/components/rx/rxsortzeos.pas @@ -0,0 +1,32 @@ +unit RxSortZeos; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils; + +type + TRxSortZeos = class(TComponent) + private + { Private declarations } + protected + { Protected declarations } + public + { Public declarations } + published + { Published declarations } + end; + +procedure Register; + +implementation +uses exsortzeos; + +procedure Register; +begin + RegisterComponents('RX DBAware',[TRxSortZeos]); +end; + +end.