Tutorial Source Code

unit tut1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Trpcb, RPCConf1, StdCtrls, MFunStr;

type
  TForm1 = class(TForm)
    RPCBroker1: TRPCBroker;
    ListBox1: TListBox;
    Button1: TButton;
    Name: TEdit;
    RightMargin: TEdit;
    FormFeed: TEdit;
    OpenExecute: TEdit;
    CloseExecute: TEdit;
    PageLength: TEdit;
    BackSpace: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
     TermTypeList: TStrings; // Added declaration of TermTypeList
  end;

var
  Form1: TForm1;


implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
var   ServerStr: String;
        PortStr: String;
begin
  TermTypeList:=TStringList.Create;
  // get the correct port and server from Registry
  if GetServerInfo(ServerStr,PortStr)<> mrCancel then
  begin {connectOK}
    RPCBroker1.Server:=ServerStr;
    RPCBroker1.ListenerPort:=StrToInt(PortStr);
    // establish a connection to the RPC Broker server
    try
      RPCBroker1.Connected:=True;
      if not RPCBroker1.CreateContext('ZxxxTT TERMTYPE') then
        Application.Terminate;
    except
      On EBrokerError do
      begin {error}
        ShowMessage('Connection to server could not be established!');
        Application.Terminate;
      end; {error}
    end; {try}
  end {connectOK}
  else
    Application.Terminate;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  RPCBroker1.RemoteProcedure:='ZxxxTT LIST';
  try
    begin {call}
      RPCBroker1.Call;
   for i:=0 to (RPCBroker1.Results.Count-1) do begin {copy}
     ListBox1.Items.Add(piece(RPCBroker1.Results[i],'^',2));
     TermTypeList.Add(RPCBroker1.Results[i]); //added line
   end; {copy}
    end; {call}
  except
    On EBrokerError do
      ShowMessage('A problem was encountered communicating with the server.');
  end; {try}
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var
  ien: String;
begin
  if (ListBox1.ItemIndex <> -1) then
  begin {displayitem}
    ien:=piece(TermTypeList[ListBox1.ItemIndex],'^',1);
    RPCBroker1.RemoteProcedure:='ZxxxTT RETRIEVE';
    RPCBroker1.Param[0].Value := ien;
    RPCBroker1.Param[0].PType := literal;
    try
      begin {call code}
        RPCBroker1.Call;
        Name.Text:=piece(RPCBroker1.Results[0],'^',1);
        RightMargin.Text:=piece(RPCBroker1.Results[0],'^',2);
        FormFeed.Text:=piece(RPCBroker1.Results[0],'^',3);
        PageLength.Text:=piece(RPCBroker1.Results[0],'^',4);
        BackSpace.Text:=piece(RPCBroker1.Results[0],'^',5);
        OpenExecute.Text:=RPCBroker1.Results[1];
        CloseExecute.Text:=RPCBroker1.Results[2];
      end; {call code}
    except
    On EBrokerError do
      ShowMessage('A problem was encountered communicating with the server.');
    end; {try}
  end; {displayitem}
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 TermTypeList.Free;
end;

end.