unit Form1; interface uses SmartCL.System, SmartCL.Graphics, SmartCL.Components, SmartCL.Forms, SmartCL.Fonts, SmartCL.Borders, SmartCL.Application, SmartCL.Controls.Panel, SmartCL.Controls.Label, SmartCL.Controls.EditBox, SmartCL.Controls.Button, SynCrossPlatformREST, mORMotClient; type TForm1 = class(TW3Form) procedure BtnComputeSynchClick(Sender: TObject); procedure BtnComputeAsynchClick(Sender: TObject); procedure BtnConnectClick(Sender: TObject); private {$I 'Form1:intf'} protected Client: TSQLRestClientURI; procedure InitializeForm; override; procedure InitializeObject; override; procedure Resize; override; end; implementation { TForm1 } procedure TForm1.BtnConnectClick(Sender: TObject); begin if Client=nil then GetClient('127.0.0.1','User','synopse', lambda (aClient: TSQLRestClientURI) PanelCompute.Visible := true; W3Label1.Visible := true; W3Label2.Visible := true; LabelConnect.Caption := ''; BtnConnect.Caption := 'Disconnect'; LabelResult.Caption := ''; Client := aClient; end, lambda ShowMessage('Impossible to connect to the server!'); end) else begin PanelCompute.Visible := false; BtnConnect.Caption := 'Server Connect'; Client.Free; Client := nil; end; end; procedure TForm1.BtnComputeAsynchClick(Sender: TObject); begin TServiceCalculator.Create(Client).Add( StrToInt(EditA.Text),StrToInt(EditB.Text), lambda (res: integer) LabelResult.Caption := format('Result = %d',[res]); end, lambda ShowMessage('Error calling the method!'); end); end; procedure TForm1.BtnComputeSynchClick(Sender: TObject); begin LabelResult.Caption := format('Result = %d', [TServiceCalculator.Create(Client)._Add( StrToInt(EditA.Text),StrToInt(EditB.Text))]); end; procedure TForm1.InitializeForm; begin inherited; // this is a good place to initialize components EditA.InputType := itNumber; EditB.InputType := itNumber; end; procedure TForm1.InitializeObject; begin inherited; {$I 'Form1:impl'} end; procedure TForm1.Resize; begin inherited; end; initialization Forms.RegisterForm({$I %FILE%}, TForm1); end.