| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- { $HDR$}
- {**********************************************************************}
- { Unit archived using Team Coherence }
- { Team Coherence is Copyright 2002 by Quality Software Components }
- { }
- { For further information / comments, visit our WEB site at }
- { http://www.TeamCoherence.com }
- {**********************************************************************}
- {}
- { $Log: 22991: MainForm.pas
- {
- { Rev 1.0 09/10/2003 3:17:42 PM Jeremy Darling
- { Project uploaded for the first time
- }
- {-----------------------------------------------------------------------------
- Demo Name: fMain
- Author: Allen O'Neill
- Purpose: Basic TCP client demo
- History:
- Date: 13/07/2002 00:55:23
- -----------------------------------------------------------------------------
- Notes:
- Demonstrates the following functions:
- (1) ReadLn, WriteLn, ReadInteger
- (2) Using the OnConnect and OnDisconnect events
- }
- unit MainForm;
- interface
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
- Dialogs, ExtCtrls, StdCtrls, IdBaseComponent, IdComponent,
- IdTCPConnection, IdTCPClient, IdTelnet;
- type
- TfrmMain = class(TForm)
- Label2: TLabel;
- edHost: TEdit;
- Label3: TLabel;
- edPort: TEdit;
- btnConnect: TButton;
- Bevel1: TBevel;
- memMsgs: TMemo;
- Panel1: TPanel;
- edMsg: TEdit;
- Client: TIdTCPClient;
- Timer1: TTimer;
- procedure btnConnectClick(Sender: TObject);
- procedure ClientConnect(Sender: TObject);
- procedure ClientDisconnect(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
- procedure edMsgKeyPress(Sender: TObject; var Key: Char);
- procedure Timer1Timer(Sender: TObject);
- procedure ClientConnected(Sender: TObject);
- procedure ClientDisconnected(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- frmMain: TfrmMain;
- implementation
- {$R *.dfm}
- procedure TfrmMain.btnConnectClick(Sender: TObject);
- begin
- if Client.Connected then
- Client.Disconnect
- else
- begin
- Client.Host := edHost.Text;
- Client.Port := StrToIntDef(edPort.Text, 8800);
- edPort.Text := IntToStr(Client.Port);
- memMsgs.Lines.Clear;
- Client.Connect;
- end;
- end;
- procedure TfrmMain.ClientConnect(Sender: TObject);
- begin
- edPort.Enabled := false;
- edHost.Enabled := false;
- btnConnect.Caption := 'Disconnect';
- end;
- procedure TfrmMain.ClientDisconnect(Sender: TObject);
- begin
- edPort.Enabled := true;
- edHost.Enabled := true;
- btnConnect.Caption := 'Connect';
- end;
- procedure TfrmMain.FormCreate(Sender: TObject);
- begin
- memMsgs.Align := alClient;
- memMsgs.Lines.Clear;
- edMsg.Text := '';
- end;
- procedure TfrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
- begin
- Client.Disconnect;
- CanClose := not Client.Connected;
- end;
- procedure TfrmMain.edMsgKeyPress(Sender: TObject; var Key: Char);
- var
- s : String;
- begin
- if Key = #13 then
- begin
- s := edMsg.Text + #10#13;
- Key := #0;
- edMsg.Text := '';
- Client.IOHandler.WriteBuffer(s[1], Length(s));
- end;
- end;
- procedure TfrmMain.Timer1Timer(Sender: TObject);
- var
- i : integer;
- s : String;
- begin
- if not Client.Connected then
- exit;
- I := Client.IOHandler.Buffer.Size;
- if I > 0 then
- begin
- SetLength(s, i);
- Client.IOHandler.ReadBuffer(s[1], i);
- memMsgs.Lines.add(Copy(s, 1, Length(s) -2));
- end;
- end;
- procedure TfrmMain.ClientConnected(Sender: TObject);
- begin
- btnConnect.Caption := 'Disconnect';
- end;
- procedure TfrmMain.ClientDisconnected(Sender: TObject);
- begin
- btnConnect.Caption := 'Connect';
- end;
- end.
|