unit DataSnapClientMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uROClient, uROBINMessage, uROSOAPMessage, DB, DBClient, uROWinInetHttpChannel, uRODataSnapConnection, StdCtrls, Buttons, Grids, DBGrids, ExtCtrls; type TDataSnapClientMainForm = class(TForm) RODataSnapConnection: TRODataSnapConnection; HTTPChannel: TROWinInetHTTPChannel; ROBinMessage: TROBinMessage; cdsCustomers: TClientDataSet; dsCustomers: TDataSource; cdsProducts: TClientDataSet; dsProducts: TDataSource; ConnectButton: TBitBtn; DisconnectButton: TBitBtn; ROSOAPMessage: TROSOAPMessage; ApplyUpdatesButton: TBitBtn; Panel1: TPanel; gProducts: TDBGrid; gCustomers: TDBGrid; Splitter1: TSplitter; procedure ConnectButtonClick(Sender: TObject); procedure DisconnectButtonClick(Sender: TObject); procedure cdsCustomersBeforeApplyUpdates(Sender: TObject; var OwnerData: OleVariant); procedure ApplyUpdatesButtonClick(Sender: TObject); procedure cdsCustomersBeforeGetParams(Sender: TObject; var OwnerData: OleVariant); procedure cdsCustomersBeforeGetRecords(Sender: TObject; var OwnerData: OleVariant); procedure cdsCustomersBeforeRowRequest(Sender: TObject; var OwnerData: OleVariant); procedure OnEnableApplyUpdates(DataSet: TDataSet); private { Private declarations } public { Public declarations } end; var DataSnapClientMainForm: TDataSnapClientMainForm; implementation {$R *.dfm} procedure TDataSnapClientMainForm.ConnectButtonClick(Sender: TObject); begin HTTPChannel.TargetURL := 'http://localhost:81/bin'; //HTTPChannel.TargetURL := 'http://localhost/isapi/DataSNapIsapiServer.dll/bin'; cdsCustomers.Active := true; cdsProducts.Active := true; DisconnectButton.Visible := true; ConnectButton.Visible := false; end; procedure TDataSnapClientMainForm.DisconnectButtonClick(Sender: TObject); begin cdsCustomers.Active := false; cdsProducts.Active := false; DisconnectButton.Visible := false; ConnectButton.Visible := true; ApplyUpdatesButton.Enabled := false; end; procedure TDataSnapClientMainForm.ApplyUpdatesButtonClick(Sender: TObject); begin cdsProducts.ApplyUpdates(-1); cdsCustomers.ApplyUpdates(-1); ApplyUpdatesButton.Enabled := false; end; procedure TDataSnapClientMainForm.cdsCustomersBeforeApplyUpdates(Sender: TObject; var OwnerData: OleVariant); begin OwnerData := 'BeforeApplyUpdates'; end; procedure TDataSnapClientMainForm.cdsCustomersBeforeGetParams(Sender: TObject; var OwnerData: OleVariant); begin OwnerData := 'BeforeGetParams'; end; procedure TDataSnapClientMainForm.cdsCustomersBeforeGetRecords(Sender: TObject; var OwnerData: OleVariant); begin OwnerData := 'BeforeGetRecords'; end; procedure TDataSnapClientMainForm.cdsCustomersBeforeRowRequest(Sender: TObject; var OwnerData: OleVariant); begin OwnerData := 'BeforeRowRequest'; end; procedure TDataSnapClientMainForm.OnEnableApplyUpdates(DataSet: TDataSet); begin ApplyUpdatesButton.Enabled := (cdsCustomers.ChangeCount > 0) or (cdsProducts.ChangeCount > 0); end; end.