1. RxDBGrid - change declaration for register sort engine function

2. New package - Rx_Sort_Zeos - sort engine for zeos components

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2542 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
alexs75
2012-09-27 14:27:35 +00:00
parent ef7bf595fb
commit 1b56006473
7 changed files with 117 additions and 48 deletions

View File

@ -71,6 +71,6 @@ begin
end;
initialization
RegisterRxDBGridSortEngine(TFBDataSetSortEngine, TFBDataSet);
RegisterRxDBGridSortEngine(TFBDataSetSortEngine, 'TFBDataSet');
end.

View File

@ -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.

View File

@ -0,0 +1,48 @@
<?xml version="1.0"?>
<CONFIG>
<Package Version="4">
<Name Value="rx_sort_zeos"/>
<CompilerOptions>
<Version Value="11"/>
<SearchPaths>
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Other>
<CompilerMessages>
<MsgFileName Value=""/>
</CompilerMessages>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
<Version Major="1"/>
<Files Count="2">
<Item1>
<Filename Value="rxsortzeos.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="RxSortZeos"/>
</Item1>
<Item2>
<Filename Value="exsortzeos.pas"/>
<UnitName Value="exsortzeos"/>
</Item2>
</Files>
<Type Value="RunAndDesignTime"/>
<RequiredPkgs Count="3">
<Item1>
<PackageName Value="zcomponent"/>
</Item1>
<Item2>
<PackageName Value="rxnew"/>
</Item2>
<Item3>
<PackageName Value="FCL"/>
</Item3>
</RequiredPkgs>
<UsageOptions>
<UnitPath Value="$(PkgOutDir)"/>
</UsageOptions>
<PublishOptions>
<Version Value="2"/>
</PublishOptions>
</Package>
</CONFIG>

View File

@ -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.

View File

@ -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;

View File

@ -66,6 +66,6 @@ begin
end;
initialization
RegisterRxDBGridSortEngine(TRxMemoryDataSortEngine, TRxMemoryData);
RegisterRxDBGridSortEngine(TRxMemoryDataSortEngine, 'TRxMemoryData');
end.

View File

@ -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.