git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.RemObjects@68 b6239004-a887-0f4b-9937-50029ccdca16
100 lines
2.7 KiB
ObjectPascal
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.
|