Marco Web Center

[an error occurred while processing this directive]

Home: Code Repository: Delphi 2009 Handbook

Project: First3Tier2009_Client.dproj

Project Structure

First3Tier2009_Client.dpr
program First3Tier2009_Client;

uses
  Forms,
  First3Tier2009_ClientMainForm in 'First3Tier2009_ClientMainForm.pas' {FormFirst3Tier2009Client},
  First3Tier2009_ClientClasses in 'First3Tier2009_ClientClasses.pas';

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TFormFirst3Tier2009Client, FormFirst3Tier2009Client);
  Application.Run;
end.
First3Tier2009_ClientMainForm.pas
unit First3Tier2009_ClientMainForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, WideStrings, DbxDatasnap, DB, DBClient, SqlExpr, DSConnect, StdCtrls,
  Grids, DBGrids, FMTBcd;

type
  TFormFirst3Tier2009Client = class(TForm)
    DSProviderConnection1: TDSProviderConnection;
    SQLConnection1: TSQLConnection;
    ClientDataSet1: TClientDataSet;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    btnOpen: TButton;
    btnHello: TButton;
    SqlServerMethod1: TSqlServerMethod;
    procedure btnOpenClick(Sender: TObject);
    procedure btnHelloClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FormFirst3Tier2009Client: TFormFirst3Tier2009Client;

implementation

uses
  First3Tier2009_ClientClasses;

var
  ServerProxyObject: TDSFirst3TierServerModuleClient;

{$R *.dfm}

procedure TFormFirst3Tier2009Client.btnHelloClick(Sender: TObject);
begin
  SqlServerMethod1.ExecuteMethod;
  ShowMessage (SqlServerMethod1.Params[0].Value);

  // or in alternative...
  with TDSFirst3TierServerModuleClient.Create(SQLConnection1.DBXConnection) do
  try
    ShowMessage (GetHello);
  finally
    Free;
  end;

  // or even better...
  ShowMessage (ServerProxyObject.GetHello);
end;

procedure TFormFirst3Tier2009Client.btnOpenClick(Sender: TObject);
begin
  ClientDataSet1.Open;
end;

procedure TFormFirst3Tier2009Client.FormCreate(Sender: TObject);
begin
  SQLConnection1.Open;
  ServerProxyObject := TDSFirst3TierServerModuleClient.
    Create(SQLConnection1.DBXConnection)
end;

procedure TFormFirst3Tier2009Client.FormDestroy(Sender: TObject);
begin
  FreeAndNil (ServerProxyObject);
end;

end.
First3Tier2009_ClientMainForm.pas.dfm
object FormFirst3Tier2009Client: TFormFirst3Tier2009Client
  Left = 0
  Top = 0
  Caption = 'First3Tier2009 Client'
  ClientHeight = 339
  ClientWidth = 691
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  OnDestroy = FormDestroy
  PixelsPerInch = 96
  TextHeight = 13
  object DBGrid1: TDBGrid
    Left = 24
    Top = 56
    Width = 625
    Height = 257
    DataSource = DataSource1
    TabOrder = 0
    TitleFont.Charset = DEFAULT_CHARSET
    TitleFont.Color = clWindowText
    TitleFont.Height = -11
    TitleFont.Name = 'Tahoma'
    TitleFont.Style = []
  end
  object btnOpen: TButton
    Left = 24
    Top = 16
    Width = 75
    Height = 25
    Caption = 'btnOpen'
    TabOrder = 1
    OnClick = btnOpenClick
  end
  object btnHello: TButton
    Left = 112
    Top = 16
    Width = 75
    Height = 25
    Caption = 'btnHello'
    TabOrder = 2
    OnClick = btnHelloClick
  end
  object DSProviderConnection1: TDSProviderConnection
    ServerClassName = 'TDSFirst3TierServerModule'
    SQLConnection = SQLConnection1
    Left = 176
    Top = 160
  end
  object SQLConnection1: TSQLConnection
    DriverName = 'Datasnap'
    LoginPrompt = False
    Left = 344
    Top = 120
  end
  object ClientDataSet1: TClientDataSet
    Aggregates = <>
    Params = <>
    ProviderName = 'DataSetProviderEmployee'
    RemoteServer = DSProviderConnection1
    Left = 96
    Top = 120
  end
  object DataSource1: TDataSource
    DataSet = ClientDataSet1
    Left = 272
    Top = 152
  end
  object SqlServerMethod1: TSqlServerMethod
    GetMetadata = False
    Params = <
      item
        DataType = ftWideString
        Precision = 2000
        Name = 'ReturnParameter'
        ParamType = ptResult
        Size = 2000
        Value = 'Hello from TDSFirst3TierServerModule at 11:30:51 PM'
      end>
    SQLConnection = SQLConnection1
    ServerMethodName = 'TDSFirst3TierServerModule.GetHello'
    Left = 216
    Top = 96
  end
end
First3Tier2009_ClientClasses.pas
//
// Created by the DataSnap proxy generator.
//

 unit First3Tier2009_ClientClasses;

interface

uses DBXCommon, Classes, SysUtils, DB, SqlExpr, DBXDBReaders;

type
  TDSFirst3TierServerModuleClient = class
  private
    FDBXConnection: TDBXConnection;
    FInstanceOwner: Boolean;
    FGetHelloCommand: TDBXCommand;
  public
    constructor Create(ADBXConnection: TDBXConnection); overload;
    constructor Create(ADBXConnection: TDBXConnection; AInstanceOwner: Boolean); overload;
    destructor Destroy; override;
    function GetHello: string;
  end;

implementation

function TDSFirst3TierServerModuleClient.GetHello: string;
begin
  if FGetHelloCommand = nil then
  begin
    FGetHelloCommand := FDBXConnection.CreateCommand;
    FGetHelloCommand.CommandType := TDBXCommandTypes.DSServerMethod;
    FGetHelloCommand.Text := 'TDSFirst3TierServerModule.GetHello';
    FGetHelloCommand.Prepare;
  end;
  FGetHelloCommand.ExecuteUpdate;
  Result := FGetHelloCommand.Parameters[0].Value.GetWideString;
end;


constructor TDSFirst3TierServerModuleClient.Create(ADBXConnection: TDBXConnection);
begin
  inherited Create;
  if ADBXConnection = nil then
    raise EInvalidOperation.Create('Connection cannot be nil.  Make sure the connection has been opened.');
  FDBXConnection := ADBXConnection;
FInstanceOwner := True;
end;


constructor TDSFirst3TierServerModuleClient.Create(ADBXConnection: TDBXConnection; AInstanceOwner: Boolean);
begin
  inherited Create;
  if ADBXConnection = nil then
    raise EInvalidOperation.Create('Connection cannot be nil.  Make sure the connection has been opened.');
  FDBXConnection := ADBXConnection;
FInstanceOwner := AInstanceOwner;
end;


destructor TDSFirst3TierServerModuleClient.Destroy;
begin
  FreeAndNil(FGetHelloCommand);
  inherited;
end;

end.
HTML file generated by PasToWeb, a tool by Marco Cantù
Copyright 2008 Marco Cantù