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

Delphi/CppBuilder

开发平台:

Delphi

  1. unit U_ljsz;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   Buttons, StdCtrls, ComCtrls, ImgList, ExtCtrls, Registry, Spin, Db,
  6.   DBClient, variants;
  7. type
  8.   TfrmLjsz = class(TForm)
  9.     Panel1: TPanel;
  10.     StatusBar1: TStatusBar;
  11.     Panel2: TPanel;
  12.     Label1: TLabel;
  13.     edtAppHost: TEdit;
  14.     Label2: TLabel;
  15.     edtAppIP: TEdit;
  16.     btnAppName: TBitBtn;
  17.     Label3: TLabel;
  18.     edtPort: TEdit;
  19.     btnOK: TSpeedButton;
  20.     btnCancel: TSpeedButton;
  21.     procedure btnOKClick(Sender: TObject);
  22.     procedure edtAppHostExit(Sender: TObject);
  23.     procedure edtAppIPExit(Sender: TObject);
  24.     procedure btnCancelClick(Sender: TObject);
  25.     procedure btnAppNameClick(Sender: TObject);
  26.     procedure edtAppHostKeyPress(Sender: TObject; var Key: Char);
  27.     procedure edtAppIPKeyPress(Sender: TObject; var Key: Char);
  28.     procedure edtPortKeyPress(Sender: TObject; var Key: Char);
  29.   private
  30.     //向注册表写入应用配置信息
  31.     procedure WriteToReg(const bAppHost, bAppIP, aPort: string);
  32.     { Private declarations }
  33.   public
  34.     { Public declarations }
  35.   end;
  36. //打开配置窗口,并测试是否连接成功
  37. function LjszExecute(aFormClass: TFormClass): boolean;
  38. var
  39.   frmLjsz: TfrmLjsz;
  40.   Connected: boolean= false; //代表是否连接成功 。
  41. implementation
  42. uses U_mainform, U_NET;
  43. {$R *.DFM}
  44. //打开配置窗口,并测试是否连接成功
  45. function LjszExecute(aFormClass: TFormClass): boolean;
  46. begin
  47.   with aFormClass.Create(Application) do
  48.   begin
  49.     Connected := False;
  50.     try
  51.       showModal;
  52.     finally
  53.       free;
  54.     end;
  55.     result := Connected;
  56.   end;
  57. end;
  58. //向注册表里写入应用服务器的配置信息
  59. procedure TfrmLjsz.WriteToReg(const bAppHost, bAppIP, aPort: string);
  60. var
  61.   Reg: Tregistry;
  62. begin
  63.   reg := Tregistry.create;
  64.   Reg.RootKey := HKEY_LOCAL_MACHINE;
  65.   if not Reg.OpenKey('Software物资管理', False) then
  66.   begin
  67.     reg.createkey('Software物资管理');
  68.     Reg.OpenKey('Software物资管理', False);
  69.   end;
  70.   Reg.WriteString('Host', bAppHost);
  71.   Reg.WriteString('Address', bAppIP);
  72.   Reg.WriteString('Port', aPort);
  73.   reg.free;
  74. end;
  75. procedure TfrmLjsz.btnOKClick(Sender: TObject);
  76. begin
  77.   if ((edtAppHost.text = null) or (edtAppHost.text = '')) and ((edtAppIP.text = null) or (edtAPPIP.text = '')) then
  78.   begin
  79.     Application.MessageBox('请输入应用服务器名字或IP!', '输入错误..', mb_iconinformation + mb_defbutton1);
  80.     exit;
  81.   end;
  82.   try
  83.     strtoint(edtPort.text);
  84.   except
  85.     Application.MessageBox('请输入正确的端口号', '输入错误..', mb_iconinformation + mb_defbutton1);
  86.     exit;
  87.   end;
  88.   statusbar1.panels[0].text := '正在连接应用程序服务器,请稍候..';
  89.   statusbar1.refresh;
  90.   Screen.cursor := crHourGlass;
  91.   frmMain.SocketConnection.Connected := false;
  92.   frmMain.SocketConnection.Host := edtAppHost.text;
  93.   frmMain.SocketConnection.Address := edtAppIP.text;
  94.   frmMain.SocketConnection.Port := strtoint(edtPort.text);
  95.   try
  96.     frmMain.SocketConnection.Connected := true;
  97.     screen.Cursor := crDefault;
  98.     application.MessageBox('连接成功', '物资管理系统', mb_iconinformation + mb_defbutton1);
  99.     Connected := True;
  100.   except
  101.     screen.cursor := crdefault;
  102.     application.MessageBox('连接失败', '物资管理系统', mb_iconinformation + mb_defbutton1);
  103.     statusbar1.panels[0].text := '连接失败,请重试..';
  104.     statusbar1.refresh;
  105.     exit;
  106.   end;
  107.   //连接成功向注册表里写入应用服务器配置信息
  108.   WriteToReg(edtAppHost.Text, edtAppIP.Text, edtPort.Text);
  109.   close;
  110. end;
  111. //关闭窗口
  112. procedure TfrmLjsz.btnCancelClick(Sender: TObject);
  113. begin
  114.   close;
  115. end;
  116. //利用可视化窗体来选择计算机
  117. procedure TfrmLjsz.btnAppNameClick(Sender: TObject);
  118. begin
  119.   edtAppIP.clear;
  120.   //NetExecute方法打开TfrmNet窗口,返回选定的计算机名
  121.   edtAppHost.text := NetExecute(TFrmNet);
  122. end;
  123. //当应用服务器名输入后,自动将应用服务器IP地址输入框置空
  124. procedure TfrmLjsz.edtAppHostExit(Sender: TObject);
  125. begin
  126.   if edtAppHost.Text <> '' then
  127.     edtAppIP.Text := '';
  128. end;
  129. //当应用服务器IP地址输入后,自动将应用服务器名输入框置空
  130. procedure TfrmLjsz.edtAppIPExit(Sender: TObject);
  131. begin
  132.   if edtAppIP.Text <> '' then
  133.     edtAppHost.Text := '';
  134. end;
  135. //应用服务器名输入框按键事件,当按下“回车”键后,将输入焦点转移到输入端口号输入框
  136. procedure TfrmLjsz.edtAppHostKeyPress(Sender: TObject; var Key: Char);
  137. begin
  138.   edtAppIP.clear;
  139.   if key = #13 then
  140.     edtPort.SetFocus;
  141. end;
  142. //应用服务器IP地址输入框按键事件,当按下“回车”键后,将输入焦点转移到输入端口号输入框
  143. procedure TfrmLjsz.edtAppIPKeyPress(Sender: TObject; var Key: Char);
  144. begin
  145.   edtAppHost.clear;
  146.   if key = #13 then
  147.     edtPort.SetFocus;
  148. end;
  149. //端口号输入框按键事件,当按下“回车”键后,调用“确定”按钮的Click方法
  150. procedure TfrmLjsz.edtPortKeyPress(Sender: TObject; var Key: Char);
  151. begin
  152.   if key = #13 then
  153.     btnOK.click;
  154. end;
  155. end.