ClientMain.pas
上传用户:psxgmh
上传日期:2013-04-08
资源大小:15112k
文件大小:3k
源码类别:

Delphi/CppBuilder

开发平台:

Delphi

  1. unit ClientMain;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   StdCtrls, IPC, Spin, ComCtrls;
  6. type
  7.   TfrmClient = class(TForm)
  8.     edtSessionName: TEdit;
  9.     btnConnect: TButton;
  10.     GroupBox1: TGroupBox;
  11.     edtReceiveString: TEdit;
  12.     Label3: TLabel;
  13.     Label4: TLabel;
  14.     Label6: TLabel;
  15.     sedtReceiveInteger: TSpinEdit;
  16.     StatusBar: TStatusBar;
  17.     Label5: TLabel;
  18.     GroupBox2: TGroupBox;
  19.     edtSendString: TEdit;
  20.     sedtSendInteger: TSpinEdit;
  21.     Label1: TLabel;
  22.     Label2: TLabel;
  23.     btnSend: TButton;
  24.     procedure btnSendClick(Sender: TObject);
  25.     procedure btnConnectClick(Sender: TObject);
  26.     procedure FormCreate(Sender: TObject);
  27.   private
  28.     IPCClient: TIPCClient;  //定义IPCClient
  29.     procedure IPCClientConnect(AHwnd: HWND);
  30.     procedure IPCClientDisconnect(AHwnd: HWND);
  31.     procedure IPCClientData(MsgPointer: Pointer);
  32.     { Private declarations }
  33.   public
  34.     { Public declarations }
  35.   end;
  36. type
  37.   {定义一个发送和接收数据记录类型}
  38.   PIPCData = ^TIPCData;
  39.   TIPCData = record
  40.     SendString: string[30];
  41.     SendInteger: integer;
  42.   end;
  43. var
  44.   frmClient: TfrmClient;
  45. implementation
  46. {$R *.DFM}
  47. //主窗体创建事件
  48. procedure TfrmClient.FormCreate(Sender: TObject);
  49. begin
  50.   IPCClient := TIPCClient.Create(self);
  51.   IPCClient.OnConnect := IPCClientConnect;
  52.   IPCClient.OnDisconnect := IPCClientDisConnect;
  53.   IPCClient.OnData := IPCClientData;
  54. end;
  55. //连接或断开服务器
  56. procedure TfrmClient.btnConnectClick(Sender: TObject);
  57. begin
  58.   if btnconnect.Caption = '连接' then
  59.   begin
  60.     if not IPCClient.Active then
  61.       IPCClient.SessionName := edtSessionName.Text;
  62.     IPCClient.Open;
  63.   end
  64.   else
  65.     IPCClient.Close;
  66. end;
  67. //发送数据
  68. procedure TfrmClient.btnSendClick(Sender: TObject);
  69. var
  70.   MsgData: TIPCData;
  71. begin
  72.   if IPCClient.Active then
  73.   begin
  74.     MsgData.SendString := edtSendString.Text;
  75.     MsgData.SendInteger := sedtSendInteger.Value;
  76.     IPCClient.SendMsg(@MsgData, Sizeof(MsgData));
  77.   end;
  78. end;
  79. //连接服务器事件
  80. procedure TfrmClient.IPCClientConnect(AHwnd: HWND);
  81. begin
  82.   Statusbar.Panels[0].Text := '连接状态 :已连接';
  83.   Statusbar.Refresh;
  84.   btnConnect.Caption := '断开连接'
  85. end;
  86. //断开服务器连接事件
  87. procedure TfrmClient.IPCClientDisconnect(AHwnd: HWND);
  88. begin
  89.   Statusbar.Panels[0].Text := '连接状态 :未连接';
  90.   Statusbar.Refresh;
  91.   btnConnect.Caption := '连接'
  92. end;
  93. //接收数据事件
  94. procedure TfrmClient.IPCClientData(MsgPointer: Pointer);
  95. var
  96.   AMsg: TIPCData;
  97. begin
  98.   AMsg := TIPCData(MsgPointer^);
  99.   edtReceiveString.Text := AMsg.SendString;
  100.   sedtReceiveInteger.Value := AMsg.SendInteger;
  101. end;
  102. end.