unit fClientForm; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROPoweredByRemObjectsButton, uDAPoweredByDataAbstractButton, ExtCtrls, Grids, DBGrids, DB, uDAMemDataTable; type TClientForm = class(TForm) Panel1: TPanel; DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton; btLoad: TButton; btDelete: TButton; btUpdate: TButton; chUseDynamicSelect: TCheckBox; dgData: TDBGrid; procedure FormCreate(Sender: TObject); procedure btLoadClick(Sender: TObject); procedure btDeleteClick(Sender: TObject); procedure btUpdateClick(Sender: TObject); procedure chUseDynamicSelectClick(Sender: TObject); private { Private declarations } function GetDataSource: TDataSource; function GetDataTable: TDAMemDataTable; public { Public declarations } end; var ClientForm: TClientForm; implementation uses fClientDataModule, DataAbstract4_Intf; {$R *.dfm} procedure TClientForm.btDeleteClick(Sender: TObject); begin GetDataTable.Delete; end; procedure TClientForm.btLoadClick(Sender: TObject); var tri: TableRequestInfoV5; triArr: array of TableRequestInfo; begin dgData.DataSource := GetDataSource; ClientDataModule.RemoteDataAdapter.DynamicSelect := chUseDynamicSelect.Checked; GetDataTable.ClearRows(true); if chUseDynamicSelect.Checked then begin GetDataTable.LogicalName := 'Workers'; tri := TableRequestInfoV5.Create; with tri do begin IncludeSchema := true; MaxRecords := -1; DynamicSelectFieldNames.Add('WorkerID'); DynamicSelectFieldNames.Add('WorkerLastName'); DynamicSelectFieldNames.Add('WorkerFirstName'); DynamicSelectFieldNames.Add('WorkerPhone'); end; SetLength(triArr, 1); triArr[0] := tri; ClientDataModule.RemoteDataAdapter.Fill([GetDataTable], triArr); end else ClientDataModule.RemoteDataAdapter.Fill([GetDataTable]); end; procedure TClientForm.btUpdateClick(Sender: TObject); begin ClientDataModule.RemoteDataAdapter.ApplyUpdates([GetDataTable]); end; procedure TClientForm.FormCreate(Sender: TObject); begin // TODO: until DynamicRequest bug fixed //ClientDataModule.Login; Application.Title := ClientForm.Caption; end; function TClientForm.GetDataSource: TDataSource; begin if chUseDynamicSelect.Checked then Result := ClientDataModule.ds_Dynamic else Result := ClientDataModule.ds_Workers; end; function TClientForm.GetDataTable: TDAMemDataTable; begin if chUseDynamicSelect.Checked then Result := ClientDataModule.tbl_Dynamic else Result := ClientDataModule.tbl_Workers; end; procedure TClientForm.chUseDynamicSelectClick(Sender: TObject); begin btUpdate.Click; dgData.DataSource := GetDataSource; btLoad.Click; end; end.