diff --git a/components/rx/exsortfb.pas b/components/rx/exsortfb.pas index f841611e3..7d5770757 100644 --- a/components/rx/exsortfb.pas +++ b/components/rx/exsortfb.pas @@ -35,13 +35,7 @@ unit exsortfb; interface uses - Classes, SysUtils, DB, - {$IFDEF FPC} - RxDBGrid - {$ELSE} - exDBGrid - {$ENDIF} - ; + Classes, SysUtils, DB, RxDBGrid; type diff --git a/components/rx/exsortmds.pas b/components/rx/exsortmds.pas index 2e743189d..20196ccf0 100644 --- a/components/rx/exsortmds.pas +++ b/components/rx/exsortmds.pas @@ -15,6 +15,7 @@ type implementation uses memds; + type THackMDS = class(TMemDataSet) end; @@ -52,7 +53,7 @@ begin ftLargeint: begin Result:=I1 > Field.AsInteger; - writeln('I1=', I1, ' I2=',Field.AsInteger,' Result=', Result, ' i=',i, ' j=',j); +// writeln('I1=', I1, ' I2=',Field.AsInteger,' Result=', Result, ' i=',i, ' j=',j); end; ftFloat, diff --git a/components/rx/exsortzeos.pas b/components/rx/exsortzeos.pas index 5cbec709d..cd2f4fc66 100644 --- a/components/rx/exsortzeos.pas +++ b/components/rx/exsortzeos.pas @@ -11,6 +11,7 @@ type TFBDataSetSortEngine = class(TExDBGridSortEngine) public procedure Sort(Field:TField; ADataSet:TDataSet; Asc:boolean);override; + procedure SortList(ListField:string; ADataSet:TDataSet; Asc:boolean);override; end; implementation @@ -18,16 +19,69 @@ implementation procedure TFBDataSetSortEngine.Sort(Field:TField; ADataSet:TDataSet; Asc:boolean); begin if Assigned(ADataSet) then - begin - (ADataSet as TZQuery).SortedFields:='"' + Field.FieldName + '"'; - if Asc then - (ADataSet as TZQuery).SortType:=stAscending + if ADataSet.ClassName='TZReadOnlyQuery' then + begin + (ADataSet as TZReadOnlyQuery).SortedFields:=Field.FieldName; + if Asc then + (ADataSet as TZReadOnlyQuery).SortType:=stAscending + else + (ADataSet as TZReadOnlyQuery).SortType:=stDescending; + end else - (ADataSet as TZQuery).SortType:=stDescending; - end + if ADataSet.ClassName='TZQuery' 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; + end; end; +procedure TFBDataSetSortEngine.SortList(ListField:string; ADataSet:TDataSet; Asc:boolean); +begin + if Assigned(ADataSet) then + if ADataSet.ClassName='TZReadOnlyQuery' then + begin + (ADataSet as TZReadOnlyQuery).SortedFields:=ListField; + if Asc then + (ADataSet as TZReadOnlyQuery).SortType:=stAscending + else + (ADataSet as TZReadOnlyQuery).SortType:=stDescending; + end + else + if ADataSet.ClassName='TZQuery' then + begin + (ADataSet as TZQuery).SortedFields:=ListField; + 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:=ListField; + if Asc then + (ADataSet as TZTable).SortType:=stAscending + else + (ADataSet as TZTable).SortType:=stDescending; + end; +end; + + initialization + RegisterExDBGridSortEngine(TFBDataSetSortEngine, TZReadOnlyQuery); RegisterExDBGridSortEngine(TFBDataSetSortEngine, TZQuery); + RegisterExDBGridSortEngine(TFBDataSetSortEngine, TZTable); end.