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

Delphi/CppBuilder

开发平台:

Delphi

  1. unit U_server;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   Db, DBTables, Grids, DBGrids, ExtCtrls, shellapi, Menus, Provider,
  6.   ComCtrls, registry, ScktComp, StdCtrls, Buttons, AxCtrls, OleCtrls, vcf1, Winsock,
  7.   DBCtrls;
  8. const
  9.   CM_RESTORE = WM_USER + $1000; {自定义的“恢复”消息}
  10.   WZGL_APP_NAME = 'WZGL_System';
  11. const
  12.   WM_WZGLNOTIFY = WM_USER + 100;  //自定义消息
  13.   strNotifyTip = '物资管理应用服务器'; //状态区的提示信息
  14.   ID_MAIN = 100; // 定义图标的ID
  15. type
  16.   TfrmMain = class(TForm)
  17.     Panel1: TPanel;
  18.     PopupMenu: TPopupMenu;
  19.     NClose: TMenuItem;
  20.     NShowForm: TMenuItem;
  21.     StatusBar1: TStatusBar;
  22.     ListView: TListView;
  23.     Database: TDatabase;
  24.     procedure FormDestroy(Sender: TObject);
  25.     procedure NCloseClick(Sender: TObject);
  26.     procedure NShowFormClick(Sender: TObject);
  27.     procedure FormCreate(Sender: TObject);
  28.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  29.   private
  30.     { Private declarations }
  31.   public
  32.     function AddIcon(hwnd: HWND): Boolean; //在状态区添加图标
  33.     function RemoveIcon(hwnd: HWND): Boolean; //从状态区移去图标
  34.     procedure Notify(var Msg: TMessage); message WM_WZGLNOTIFY; //自定义消息处理函数
  35.     procedure minimize(sender: Tobject); //定义最小化过程,赋给Application.OnMinimize;
  36.     function DBConnect(aServerName, aDatabaseName, aUserName, aPassword: string): boolean;
  37.     procedure CreateParams(var Params: TCreateParams); override;
  38.     procedure RestoreRequest(var message: TMessage); message CM_RESTORE;
  39.     { Public declarations }
  40.   end;
  41. var
  42.   frmMain: TfrmMain;
  43.   nid: NOTIFYICONDATA;
  44.   i: integer;
  45. implementation
  46. uses WZGL_RDB, DBConnectFrm;
  47. {$R *.DFM}
  48. procedure TFrmMain.CreateParams(var Params: TCreateParams);
  49. begin
  50.   inherited CreateParams(Params);
  51.   Params.WinClassName := WZGL_APP_NAME;
  52. end;
  53. {处理“恢复”消息}
  54. procedure TFrmMain.RestoreRequest(var message: TMessage);
  55. begin
  56.   if IsIconic(Application.Handle) = True then  //窗体是否最小化
  57.     Application.Restore  //恢复窗体
  58.   else
  59.     Application.BringToFront; //提到前面显示
  60. end;
  61. //在状态区添加图标
  62. function TfrmMain.AddIcon(hwnd: HWND): Boolean;
  63. begin
  64.   nid.cbSize := sizeof(NOTIFYICONDATA);
  65.   nid.Wnd := hwnd;
  66.   nid.uID := ID_MAIN;
  67.   nid.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
  68.   nid.uCallbackMessage := WM_WZGLNOTIFY;
  69.   nid.hIcon := LoadIcon(hInstance, 'MAINICON');
  70.   strCopy(nid.szTip, strNotifyTip);
  71.   AddIcon := Shell_NotifyIcon(NIM_ADD, @nid);
  72. end;
  73. //从状态区移去图标
  74. function TfrmMain.RemoveIcon(hwnd: HWND): Boolean;
  75. var
  76.   nid: NOTIFYICONDATA;
  77. begin
  78.   nid.cbSize := sizeof(NOTIFYICONDATA);
  79.   nid.Wnd := hwnd;
  80.   nid.uID := ID_MAIN;
  81.   nid.uFlags := 0;
  82.   RemoveIcon := Shell_NotifyIcon(NIM_DELETE, @nid);
  83. end;
  84. //自定义消息处理函数
  85. procedure TfrmMain.Notify(var Msg: TMessage);
  86. var
  87.   Pt: TPoint;
  88. begin
  89.   case msg.LParam of
  90.     WM_RBUTTONDOWN:    //当点击右键时,弹出快捷菜单
  91.       begin
  92.         SetForeGroundWindow(nid.wnd);
  93.         GetCursorPos(Pt);
  94.         Popupmenu.Popup(pt.x, pt.y);
  95.       end;
  96.   end;
  97. end;
  98. //定义最小化过程,赋给Application.OnMinimize;
  99. procedure TfrmMain.minimize(sender: Tobject);
  100. begin
  101.   AddIcon(handle);
  102.   ShowWindow(Application.handle, sw_hide)
  103. end;
  104. procedure TfrmMain.FormDestroy(Sender: TObject);
  105. begin
  106.   RemoveIcon(handle);
  107. end;
  108. procedure TfrmMain.NCloseClick(Sender: TObject);
  109. begin
  110.   close;
  111. end;
  112. procedure TfrmMain.NShowFormClick(Sender: TObject);
  113. begin
  114.   RemoveIcon(handle);
  115.   ShowWindow(Application.handle, SW_SHOWNORMAL);
  116. end;
  117. procedure TfrmMain.FormCreate(Sender: TObject);
  118. var
  119.   serverName, databaseName, userName, password: string;
  120. begin
  121.   readFromIni(serverName, databaseName, userName, password);//读取配置文件
  122.   if not DBConnect(ServerName, DatabaseName, UserName, Password) then //测试连接
  123.     if not DBConnectExecute(TfrmDBConnect) then
  124.       Application.Terminate;  //如果连接不成功,退出应用程序
  125.   Application.OnMinimize := minimize;
  126. end;
  127. procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
  128. begin
  129.   if application.messagebox('请确认是否退出!', '服务器端应用程序监测', mb_iconinformation + mb_yesno) = IDno then
  130.     abort;
  131. end;
  132. function TfrmMain.DBConnect(aServerName, aDatabaseName, aUserName, aPassword: string): boolean;
  133. begin
  134.   Result := True;
  135.   Database.connected := False;
  136.   Database.DriverName := 'mssql'; //驱动名称
  137.   Database.Params.Values['Server Name'] := aServerName; //服务器名
  138.   Database.Params.Values['Database Name'] := aDatabaseName; //数据库名
  139.   Database.Params.Values['User Name'] := aUserName;//登录数据库用户名
  140.   Database.Params.Values['Password'] := aPassword; //相应数据库用户的密码
  141.   try
  142.     Database.Connected := True;
  143.   except
  144.     result := False;
  145.   end;
  146. end;
  147. end.