ljszs.~pas
上传用户:szruida
上传日期:2007-06-01
资源大小:6518k
文件大小:9k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit ljszs;
  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, MConnect, SConnect, TFlatHintUnit, AppEvnts, ObjBrkr;
  7. type
  8.   TLjsz = 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.     Socket1: TSocketConnection;
  22.     Socket2: TSocketConnection;
  23.     Socket3: TSocketConnection;
  24.     ApplicationEvents1: TApplicationEvents;
  25.     Socket4: TSocketConnection;
  26.     Socket5: TSocketConnection;
  27.     Socket6: TSocketConnection;
  28.     Socket7: TSocketConnection;
  29.     procedure btnOKClick(Sender: TObject);
  30.     procedure edtAppHostExit(Sender: TObject);
  31.     procedure edtAppIPExit(Sender: TObject);
  32.     procedure btnCancelClick(Sender: TObject);
  33.     procedure btnAppNameClick(Sender: TObject);
  34.     procedure edtAppHostKeyPress(Sender: TObject; var Key: Char);
  35.     procedure edtAppIPKeyPress(Sender: TObject; var Key: Char);
  36.     procedure edtPortKeyPress(Sender: TObject; var Key: Char);
  37.     procedure FormCreate(Sender: TObject);
  38.     procedure Socket1AfterDisconnect(Sender: TObject);
  39.     procedure Socket1BeforeDisconnect(Sender: TObject);
  40.     procedure ApplicationEvents1Exception(Sender: TObject; E: Exception);
  41.     procedure FormKeyDown(Sender: TObject; var Key: Word;
  42.       Shift: TShiftState);
  43.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  44.     procedure ApplicationEvents1ActionExecute(Action: TBasicAction;
  45.       var Handled: Boolean);
  46.   private
  47.     //向注册表写入应用配置信息
  48.     procedure WriteToReg(const bAppHost, bAppIP, aPort: string);
  49.     { Private declarations }
  50.   public
  51.     { Public declarations }
  52.     host,ip:string;
  53.     dir:string;
  54.   end;
  55. //打开配置窗口,并测试是否连接成功
  56. function LjszExecute(aFormClass: TFormClass): boolean;
  57. var
  58.   Ljsz: TLjsz;
  59.   Connected: boolean= false; //代表是否连接成功 。
  60. implementation
  61. uses mainfrms,frmnets, logins,u_Public;
  62. {$R *.DFM}
  63. //打开配置窗口,并测试是否连接成功
  64. function LjszExecute(aFormClass: TFormClass): boolean;
  65. begin
  66.   with aFormClass.Create(Application) do
  67.   begin
  68.     Connected := False;
  69.     try
  70.       showModal;
  71.     finally
  72.       free;
  73.     end;
  74.     result := Connected;
  75.   end;
  76. end;
  77. //向注册表里写入应用服务器的配置信息
  78. procedure TLjsz.WriteToReg(const bAppHost, bAppIP, aPort: string);
  79. var
  80.   Reg: Tregistry;
  81. begin
  82.   reg := Tregistry.create;
  83.   Reg.RootKey := HKEY_LOCAL_MACHINE;
  84.   if not Reg.OpenKey('Software档案管理', False) then
  85.   begin
  86.     reg.createkey('Software档案管理');
  87.     Reg.OpenKey('Software档案管理', False);
  88.   end;
  89.   Reg.WriteString('Host', bAppHost);
  90.   Reg.WriteString('Address', bAppIP);
  91.   Reg.WriteString('Port', aPort);
  92.   reg.free;
  93. end;
  94. procedure TLjsz.btnOKClick(Sender: TObject);
  95. begin
  96.   if ((edtAppHost.text = null) or (edtAppHost.text = '')) and ((edtAppIP.text = null) or (edtAPPIP.text = '')) then
  97.   begin
  98.     Application.MessageBox('请输入应用服务器名字或IP!', '输入错误..', mb_iconinformation + mb_defbutton1);
  99.     exit;
  100.   end;
  101.   try
  102.     strtoint(edtPort.text);
  103.   except
  104.     Application.MessageBox('请输入正确的端口号', '输入错误..', mb_iconinformation + mb_defbutton1);
  105.     exit;
  106.   end;   
  107.   if trim(edtAppHost.text)<>'' then Socket1.Host := edtAppHost.text else Socket1.Address := edtAppIP.text;
  108.      Socket1.ServerName:='MMServer.MnData'; Socket1.Connected := true;
  109.   if trim(edtAppHost.text)<>'' then Socket2.Host := edtAppHost.text else Socket2.Address := edtAppIP.text;
  110.      Socket2.ServerName:='MMServer.MnData'; Socket2.Connected := true;
  111.   if trim(edtAppHost.text)<>'' then Socket3.Host := edtAppHost.text else Socket3.Address := edtAppIP.text;
  112.      Socket3.ServerName:='MMServer.MnData'; Socket3.Connected := true;
  113.   if trim(edtAppHost.text)<>'' then Socket4.Host := edtAppHost.text else Socket4.Address := edtAppIP.text;
  114.      Socket4.ServerName:='MMServer.MnData'; Socket4.Connected := true;
  115.   if trim(edtAppHost.text)<>'' then Socket5.Host := edtAppHost.text else Socket5.Address := edtAppIP.text;
  116.      Socket5.ServerName:='MMServer.MnData'; Socket5.Connected := true;
  117.   if trim(edtAppHost.text)<>'' then Socket6.Host := edtAppHost.text else Socket6.Address := edtAppIP.text;
  118.      Socket6.ServerName:='MMServer.MnData'; Socket6.Connected := true;
  119.   if trim(edtAppHost.text)<>'' then Socket7.Host := edtAppHost.text else Socket7.Address := edtAppIP.text;
  120.      Socket7.ServerName:='MMServer.MnData'; Socket7.Connected := true;
  121.   if trim(edtAppHost.text)<>'' then mainfrm.Socket1.Host := edtAppHost.text else mainfrm.Socket1.Address := edtAppIP.text;
  122.      mainfrm.Socket1.ServerName:='MMServer.MnData'; mainfrm.Socket1.Connected := true;
  123.   //-------------------------------------------------- 将客户端与中间层建立连接
  124.   ip:=trim(edtappip.Text);//主机ip
  125.   host:=trim(edtapphost.Text);//主机名
  126.   if IP<>'' then
  127.      Computer_Ip:=Ip     //主机ip
  128.   else if host<>'' then
  129.      Computer_Ip:=Host;//主机名
  130.   statusbar1.panels[0].text := '正在连接应用程序服务器,请稍候..';
  131.   statusbar1.refresh;
  132.   Screen.cursor := crHourGlass;
  133.   //---------连接socketconnection1
  134.   application.MessageBox('连接成功', '档案管理管理系统', mb_iconinformation + mb_defbutton1);
  135.   hide;
  136.   login:=tlogin.Create(application);
  137.   login.show;
  138.   //-----
  139.   screen.cursor := crdefault;
  140.   statusbar1.refresh;
  141.   exit;
  142.   //连接成功向注册表里写入应用服务器配置信息
  143.   WriteToReg(edtAppHost.Text, edtAppIP.Text, edtPort.Text);
  144.   ljsz.Hide;
  145.   //close;;
  146. end;
  147. //关闭窗口
  148. procedure TLjsz.btnCancelClick(Sender: TObject);
  149. begin
  150.  if trim(edtAppHost.text)<>'' then mainfrm.Socket1.Host := edtAppHost.text else mainfrm.Socket1.Address := edtAppIP.text;
  151.     mainfrm.Socket1.ServerName:='MMServer.MnData'; mainfrm.Socket1.Connected := true;
  152.   application.Terminate;
  153. end;
  154. //利用可视化窗体来选择计算机
  155. procedure TLjsz.btnAppNameClick(Sender: TObject);
  156. begin
  157.   edtAppIP.clear;
  158.   //NetExecute方法打开TfrmNet窗口,返回选定的计算机名
  159.   edtAppHost.text := NetExecute(TFrmNet);
  160. end;
  161. //当应用服务器名输入后,自动将应用服务器IP地址输入框置空
  162. procedure TLjsz.edtAppHostExit(Sender: TObject);
  163. begin
  164.   if edtAppHost.Text <> '' then
  165.     edtAppIP.Text := '';
  166. end;
  167. //当应用服务器IP地址输入后,自动将应用服务器名输入框置空
  168. procedure TLjsz.edtAppIPExit(Sender: TObject);
  169. begin
  170.   if edtAppIP.Text <> '' then
  171.     edtAppHost.Text := '';
  172. end;
  173. //应用服务器名输入框按键事件,当按下“回车”键后,将输入焦点转移到输入端口号输入框
  174. procedure TLjsz.edtAppHostKeyPress(Sender: TObject; var Key: Char);
  175. begin
  176.   edtAppIP.clear;
  177.   if key = #13 then
  178.     edtPort.SetFocus;
  179. end;
  180. //应用服务器IP地址输入框按键事件,当按下“回车”键后,将输入焦点转移到输入端口号输入框
  181. procedure TLjsz.edtAppIPKeyPress(Sender: TObject; var Key: Char);
  182. begin
  183.   edtAppHost.clear;
  184.   if key = #13 then
  185.     edtPort.SetFocus;
  186. end;
  187. //端口号输入框按键事件,当按下“回车”键后,调用“确定”按钮的Click方法
  188. procedure TLjsz.edtPortKeyPress(Sender: TObject; var Key: Char);
  189. begin
  190.   if key = #13 then
  191.     btnOK.click;
  192. end;
  193. procedure TLjsz.FormCreate(Sender: TObject);
  194. begin
  195.   getdir(0,dir);
  196. end;
  197. procedure TLjsz.Socket1AfterDisconnect(Sender: TObject);
  198. begin
  199.   //application.MessageBox('程序与服务器断开连接!','提示',mb_iconinformation+mb_defbutton1);
  200. end;
  201. procedure TLjsz.Socket1BeforeDisconnect(Sender: TObject);
  202. begin
  203.   //application.MessageBox('程序与服务器断开连接!','提示',mb_iconinformation+mb_defbutton1);
  204. end;
  205. procedure TLjsz.ApplicationEvents1Exception(Sender: TObject; E: Exception);
  206. var
  207.   str: string;
  208. begin
  209.   str := e.Message;
  210.   if pos('RPC服务器不可用', str)>0 then
  211.     application.MessageBox(pchar(str),'提示'mb_ok+mb_iconinformation);
  212. end;
  213. procedure TLjsz.FormKeyDown(Sender: TObject; var Key: Word;
  214.   Shift: TShiftState);
  215. begin
  216.   if key=VK_F1 then//确定
  217.      btnOkClick(Sender);
  218.   if key=VK_F3 then//取消
  219.      BtnCancelClick(Sender);
  220. end;
  221. procedure TLjsz.FormClose(Sender: TObject; var Action: TCloseAction);
  222. begin
  223.  Socket1.Connected:=false;
  224.  Socket2.Connected:=false;
  225.  Socket3.Connected:=false;
  226.  Socket4.Connected:=false;
  227.  Socket5.Connected:=false;
  228.  Socket6.Connected:=false;
  229.  Socket7.Connected:=false;
  230.  mainfrm.Socket1.Connected:=false;
  231. end;
  232. procedure TLjsz.ApplicationEvents1ActionExecute(Action: TBasicAction;
  233.   var Handled: Boolean);
  234. var str:string;
  235. begin
  236.  {str:=e.Message;
  237.  if (pos('datetime',str)>0) then
  238.     application.MessageBox('数据类型不符合要求!','提示',mb_iconExclaMation);
  239.  if (pos('Calendar',str)>0) then
  240.     application.MessageBox('数据范围有误!','提示',mb_iconExclaMation);
  241.  if (Pos('Reference 约束',str)>0) then}
  242. end;
  243. end.