You've already forked lazarus-ccr
RxFPC:add RxDBGrid sort engine for IBX
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6154 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
42
components/rx/trunk/rx_sort_ibx.lpk
Normal file
42
components/rx/trunk/rx_sort_ibx.lpk
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<CONFIG>
|
||||||
|
<Package Version="4">
|
||||||
|
<Name Value="rx_sort_ibx"/>
|
||||||
|
<Type Value="RunAndDesignTime"/>
|
||||||
|
<CompilerOptions>
|
||||||
|
<Version Value="11"/>
|
||||||
|
<SearchPaths>
|
||||||
|
<OtherUnitFiles Value="rx_sort_ibx"/>
|
||||||
|
<UnitOutputDirectory Value="lib/rx_sort_ibx/$(TargetCPU)-$(TargetOS)"/>
|
||||||
|
</SearchPaths>
|
||||||
|
</CompilerOptions>
|
||||||
|
<Files Count="2">
|
||||||
|
<Item1>
|
||||||
|
<Filename Value="rx_sort_ibx/rxsortibx.pas"/>
|
||||||
|
<HasRegisterProc Value="True"/>
|
||||||
|
<UnitName Value="RxSortIBX"/>
|
||||||
|
</Item1>
|
||||||
|
<Item2>
|
||||||
|
<Filename Value="rx_sort_ibx/exsortibx.pas"/>
|
||||||
|
<UnitName Value="exsortibx"/>
|
||||||
|
</Item2>
|
||||||
|
</Files>
|
||||||
|
<RequiredPkgs Count="3">
|
||||||
|
<Item1>
|
||||||
|
<PackageName Value="ibexpress"/>
|
||||||
|
</Item1>
|
||||||
|
<Item2>
|
||||||
|
<PackageName Value="rxnew"/>
|
||||||
|
</Item2>
|
||||||
|
<Item3>
|
||||||
|
<PackageName Value="FCL"/>
|
||||||
|
</Item3>
|
||||||
|
</RequiredPkgs>
|
||||||
|
<UsageOptions>
|
||||||
|
<UnitPath Value="$(PkgOutDir)"/>
|
||||||
|
</UsageOptions>
|
||||||
|
<PublishOptions>
|
||||||
|
<Version Value="2"/>
|
||||||
|
</PublishOptions>
|
||||||
|
</Package>
|
||||||
|
</CONFIG>
|
22
components/rx/trunk/rx_sort_ibx.pas
Normal file
22
components/rx/trunk/rx_sort_ibx.pas
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{ This file was automatically created by Lazarus. Do not edit!
|
||||||
|
This source is only used to compile and install the package.
|
||||||
|
}
|
||||||
|
|
||||||
|
unit rx_sort_ibx;
|
||||||
|
|
||||||
|
{$warn 5023 off : no warning about unused units}
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
RxSortIBX, exsortibx, LazarusPackageIntf;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
procedure Register;
|
||||||
|
begin
|
||||||
|
RegisterUnit('RxSortIBX', @RxSortIBX.Register);
|
||||||
|
end;
|
||||||
|
|
||||||
|
initialization
|
||||||
|
RegisterPackage('rx_sort_ibx', @Register);
|
||||||
|
end.
|
90
components/rx/trunk/rx_sort_ibx/exsortibx.pas
Normal file
90
components/rx/trunk/rx_sort_ibx/exsortibx.pas
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
unit exsortibx;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, DB, RxDBGrid;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TZeosDataSetSortEngine }
|
||||||
|
|
||||||
|
{ TIBXDataSetSortEngine }
|
||||||
|
|
||||||
|
TIBXDataSetSortEngine = class(TRxDBGridSortEngine)
|
||||||
|
protected
|
||||||
|
public
|
||||||
|
procedure Sort(FieldName: string; ADataSet:TDataSet; Asc:boolean; SortOptions:TRxSortEngineOptions);override;
|
||||||
|
procedure SortList(ListField: string; ADataSet: TDataSet; Asc: array of boolean; SortOptions: TRxSortEngineOptions); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
uses IBCustomDataSet;
|
||||||
|
|
||||||
|
function FixFieldName(S:string):string;inline;
|
||||||
|
begin
|
||||||
|
if not IsValidIdent(S) then
|
||||||
|
Result:='"'+S+'"'
|
||||||
|
else
|
||||||
|
Result:=S;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TIBXDataSetSortEngine }
|
||||||
|
|
||||||
|
procedure TIBXDataSetSortEngine.Sort(FieldName: string; ADataSet: TDataSet;
|
||||||
|
Asc: boolean; SortOptions: TRxSortEngineOptions);
|
||||||
|
begin
|
||||||
|
if not Assigned(ADataSet) then exit;
|
||||||
|
|
||||||
|
if ADataSet is TIBCustomDataSet then
|
||||||
|
begin
|
||||||
|
if Asc then
|
||||||
|
FieldName := FixFieldName(FieldName) + ' Asc'
|
||||||
|
else
|
||||||
|
FieldName := FixFieldName(FieldName) + ' Desc';
|
||||||
|
TIBCustomDataSet(ADataSet).OrderFields:=FieldName;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TIBXDataSetSortEngine.SortList(ListField: string; ADataSet: TDataSet;
|
||||||
|
Asc: array of boolean; SortOptions: TRxSortEngineOptions);
|
||||||
|
var
|
||||||
|
S: String;
|
||||||
|
C: SizeInt;
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
if not Assigned(ADataSet) then exit;
|
||||||
|
|
||||||
|
S:='';
|
||||||
|
C:=Pos(';', ListField);
|
||||||
|
i:=0;
|
||||||
|
while C>0 do
|
||||||
|
begin
|
||||||
|
if S<>'' then S:=S+';';
|
||||||
|
S:=S + FixFieldName(Copy(ListField, 1, C-1));
|
||||||
|
Delete(ListField, 1, C);
|
||||||
|
|
||||||
|
if (i<=High(Asc)) and (not Asc[i]) then
|
||||||
|
S:=S + ' DESC';
|
||||||
|
C:=Pos(';', ListField);
|
||||||
|
inc(i);
|
||||||
|
end;
|
||||||
|
|
||||||
|
if ListField<>'' then
|
||||||
|
begin
|
||||||
|
if S<>'' then S:=S+';';
|
||||||
|
S:=S + FixFieldName(ListField);
|
||||||
|
if (i<=High(Asc)) and (not Asc[i]) then
|
||||||
|
S:=S + ' DESC';
|
||||||
|
end;
|
||||||
|
|
||||||
|
(ADataSet as TIBCustomDataSet).OrderFields:=S;
|
||||||
|
end;
|
||||||
|
|
||||||
|
initialization
|
||||||
|
RegisterRxDBGridSortEngine(TIBXDataSetSortEngine, 'TIBQuery');
|
||||||
|
RegisterRxDBGridSortEngine(TIBXDataSetSortEngine, 'TIBDataSet');
|
||||||
|
end.
|
||||||
|
|
32
components/rx/trunk/rx_sort_ibx/rxsortibx.pas
Normal file
32
components/rx/trunk/rx_sort_ibx/rxsortibx.pas
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
unit RxSortIBX;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils;
|
||||||
|
|
||||||
|
type
|
||||||
|
TRxSortIBX = class(TComponent)
|
||||||
|
private
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
public
|
||||||
|
|
||||||
|
published
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Register;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
uses exsortibx;
|
||||||
|
|
||||||
|
procedure Register;
|
||||||
|
begin
|
||||||
|
RegisterComponents('RX DBAware',[TRxSortIBX]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
Reference in New Issue
Block a user