Componentes.Terceros.RemObj.../internal/6.0.43.801/1/RemObjects Samples/Data Abstract for Delphi/Refresh Update Data/fClientDataModule.pas
2010-01-29 16:17:43 +00:00

100 lines
2.7 KiB
ObjectPascal

unit fClientDataModule;
interface
uses
{vcl:} SysUtils, Classes, DB, DBClient,
{RemObjects:} uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROWinInetHTTPChannel,
{Data Abstract:} uDADataTable, uDABin2DataStreamer, uDAInterfaces, uDARemoteDataAdapter,
uDADataStreamer, uDAScriptingProvider, uDAMemDataTable, uRODynamicRequest,
uROEventRepository;
type
TClientDataModule = class(TDataModule)
Message: TROBinMessage;
Channel: TROWinInetHTTPChannel;
RemoteService: TRORemoteService;
DataStreamer: TDABin2DataStreamer;
RemoteDataAdapter: TDARemoteDataAdapter;
drLoginRequest: TRODynamicRequest;
tbl_Clients: TDAMemDataTable;
ds_Clients: TDADataSource;
EventReceiver: TROEventReceiver;
procedure DataModuleCreate(Sender: TObject);
procedure tbl_ClientsCalcFields(DataTable: TDADataTable);
private
{ Private declarations }
fLockedRows: TStringList;
fIdField: TDAField;
fLockedField: TDAField;
public
{ Public declarations }
property LockedRows: TStringList read fLockedRows;
procedure LockRow(aId: string);
procedure UnlockRow(aId: string);
procedure Login;
end;
var
ClientDataModule: TClientDataModule;
implementation
{$R *.dfm}
uses DASampleLibrary_Intf;
{ TClientDataModule }
procedure TClientDataModule.DataModuleCreate(Sender: TObject);
begin
fLockedRows := TStringList.Create;
fIdField := tbl_Clients.FieldByName('ClientId');
fLockedField := tbl_Clients.FieldByName('Locked');
end;
procedure TClientDataModule.LockRow(aId: string);
begin
if fLockedRows.IndexOf(aId) < 0 then fLockedRows.Add(aId);
tbl_Clients.Refresh;
end;
procedure TClientDataModule.Login;
begin
with drLoginRequest do begin
{$IFNDEF FPC}
Params[0].Value := PlatformEnum_peWindowsDelphi;
{$ELSE}
{$IFDEF WINDOWS}
Params[0].Value := PlatformEnum_peWindowsFPC;
{$ELSE}
{$IFDEF LINUX}
Params[0].Value := PlatformEnum_peLinuxFPC;
{$ELSE}
Params[0].Value := PlatformEnum_peUnknown;
{$ENDIF}
{$ENDIF}
{$ENDIF}
Params[1].Value := 'DASQL Client';
Execute(Params);
end;
end;
procedure TClientDataModule.tbl_ClientsCalcFields(DataTable: TDADataTable);
begin
if fLockedRows.IndexOf(DataTable.Fields[fIdField.Index].AsString) >=0
then DataTable.Fields[fLockedField.Index].AsString := 'X'
else DataTable.Fields[fLockedField.Index].AsString := '';
end;
procedure TClientDataModule.UnlockRow(aId: string);
var
i: integer;
begin
i := fLockedRows.IndexOf(aId);
if i >= 0 then fLockedRows.Delete(i);
tbl_Clients.Refresh;
end;
end.