Componentes.Terceros.RemObj.../internal/6.0.43.801/1/RemObjects Samples/Data Abstract for Delphi/Combined DA Sample/fClientForm.pas
2010-01-29 16:17:43 +00:00

219 lines
6.1 KiB
ObjectPascal

unit fClientForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,
uROClient, uROClientIntf, uRORemoteService, uROBinMessage, ExtCtrls,
uROPoweredByRemObjectsButton, uDAPoweredByDataAbstractButton, ComCtrls, Grids,
DBGrids, DBCtrls, uDADataTable, uDAInterfaces, uDADataAdapter;
type
TClientForm = class(TForm)
Panel1: TPanel;
DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton;
rgFailureBehavior: TRadioGroup;
rgReducedDelta: TRadioGroup;
pcSamples: TPageControl;
tsClientsOrders: TTabSheet;
tsProducts: TTabSheet;
tsAddress: TTabSheet;
Panel2: TPanel;
Label1: TLabel;
Memo1: TMemo;
btLoadCustomersOrders: TButton;
btDeleteCustomer: TButton;
btApplyChangesCustomers: TButton;
Label2: TLabel;
dgClients: TDBGrid;
Splitter1: TSplitter;
Panel3: TPanel;
Panel4: TPanel;
Splitter2: TSplitter;
dgOrderDetails: TDBGrid;
Label3: TLabel;
Panel5: TPanel;
Label4: TLabel;
dgOrders: TDBGrid;
Panel6: TPanel;
Label5: TLabel;
Memo2: TMemo;
btLoadProducts: TButton;
btApplyChangesProducts: TButton;
Label6: TLabel;
dgProducts: TDBGrid;
Label7: TLabel;
Panel7: TPanel;
Label8: TLabel;
Memo3: TMemo;
btLoadAddresses: TButton;
btApplyChangesAddresses: TButton;
dgAddresses: TDBGrid;
Panel8: TPanel;
cbGroups: TDBLookupComboBox;
procedure FormCreate(Sender: TObject);
procedure btLoadCustomersOrdersClick(Sender: TObject);
procedure btDeleteCustomerClick(Sender: TObject);
procedure btApplyChangesCustomersClick(Sender: TObject);
procedure pcSamplesChange(Sender: TObject);
procedure btLoadProductsClick(Sender: TObject);
procedure btApplyChangesProductsClick(Sender: TObject);
procedure btLoadAddressesClick(Sender: TObject);
procedure btApplyChangesAddressesClick(Sender: TObject);
procedure cbGroupsCloseUp(Sender: TObject);
private
{ Private declarations }
procedure AdjustBehavior;
procedure HandleUpdate(const aTables: array of TDADataTable);
procedure SelectedGroupChanged(Sender: TObject);
public
{ Public declarations }
end;
var
ClientForm: TClientForm;
implementation
uses
fClientDataModule, DB;
{$R *.dfm}
procedure TClientForm.AdjustBehavior;
begin
with ClientDataModule do begin
case rgFailureBehavior.ItemIndex of
0: RemoteDataAdapter.FailureBehavior := fbShowReconcile;
1: RemoteDataAdapter.FailureBehavior := fbRaiseException;
2: RemoteDataAdapter.FailureBehavior := fbBoth;
3: RemoteDataAdapter.FailureBehavior := fbNone;
end;
if rgReducedDelta.ItemIndex = 0 then begin
RemoteDataAdapter.DynamicSelect := True;
DataStreamer.SendReducedDelta := True;
end
else begin
RemoteDataAdapter.DynamicSelect := False;
DataStreamer.SendReducedDelta := False;
end;
end;
end;
procedure TClientForm.btApplyChangesAddressesClick(Sender: TObject);
begin
AdjustBehavior;
HandleUpdate([ClientDataModule.tbl_UnionAddresses]);
end;
procedure TClientForm.btApplyChangesCustomersClick(Sender: TObject);
begin
AdjustBehavior;
with ClientDataModule do
HandleUpdate([tbl_BPClients]);
end;
procedure TClientForm.btApplyChangesProductsClick(Sender: TObject);
begin
AdjustBehavior;
with ClientDataModule do HandleUpdate([tbl_Products]);
end;
procedure TClientForm.btDeleteCustomerClick(Sender: TObject);
begin
with ClientDataModule do
if tbl_BPClients.RecordCount > 0
then tbl_BPClients.Delete;
end;
procedure TClientForm.btLoadAddressesClick(Sender: TObject);
begin
AdjustBehavior;
with ClientDataModule do begin
tbl_UnionAddresses.ClearRows(true);
RemoteDataAdapter.Fill([tbl_UnionAddresses]);
end;
end;
procedure TClientForm.btLoadCustomersOrdersClick(Sender: TObject);
begin
with ClientDataModule do begin
if tbl_BPClients.Active then tbl_BPClients.Close;
tbl_BPClients.Open;
end;
end;
procedure TClientForm.btLoadProductsClick(Sender: TObject);
begin
AdjustBehavior;
with ClientDataModule do begin
tbl_SelectedGroup.ClearRows(true);
tbl_Products.ClearRows(true);
tbl_Groups.ClearRows(true);
RemoteDataAdapter.Fill([tbl_SelectedGroup]);
RemoteDataAdapter.Fill([tbl_Groups]);
end;
SelectedGroupChanged(nil);
end;
procedure TClientForm.FormCreate(Sender: TObject);
begin
// TODO: until DynamicRequest bug fixed
//ClientDataModule.Login;
Application.Title := ClientForm.Caption;
pcSamples.ActivePageIndex := 0;
ClientDataModule.OnSelectedGroupChange := SelectedGroupChanged;
end;
procedure TClientForm.HandleUpdate(const aTables: array of TDADataTable);
var i: integer;
begin
try
for i := Low(aTables) to High(aTables) do
if aTables[i].State <> dsBrowse then aTables[i].Post;
ClientDataModule.RemoteDataAdapter.ApplyUpdates(aTables);
except
on E: Exception do ShowMessage('Exception raised: ' + E.Message);
end;
end;
procedure TClientForm.pcSamplesChange(Sender: TObject);
begin
case pcSamples.ActivePageIndex of
1: begin
rgReducedDelta.ItemIndex := 0;
rgReducedDelta.Enabled := false;
end;
2: begin
rgReducedDelta.ItemIndex := 1;
rgReducedDelta.Enabled := false;
end;
else rgReducedDelta.Enabled := true;
end;
end;
procedure TClientForm.SelectedGroupChanged(Sender: TObject);
var
wb: TDAWhereBuilder;
expArray: array of TDAWhereExpression;
begin
wb := TDAWhereBuilder.Create;
with wb, ClientDataModule do begin
Expression := NewBinaryExpression(tbl_Products.LogicalName, 'ProductGroup', dboEqual,
tbl_SelectedGroup.FieldValues[0], datInteger);
tbl_Products.ClearRows(true);
SetLength(expArray, 1);
expArray[0] := Expression;
RemoteDataAdapter.Fill([tbl_Products], expArray);
end;
wb.Free;
end;
procedure TClientForm.cbGroupsCloseUp(Sender: TObject);
begin
SelectedGroupChanged(Sender);
end;
end.