⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 u_server.pas

📁 物资管理三层源代码,包含的更能比较多,窗口也多,比较适合参考用
💻 PAS
字号:
unit U_server;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, DBTables, Grids, DBGrids, ExtCtrls, shellapi, Menus, Provider,
  ComCtrls, registry, ScktComp, StdCtrls, Buttons, AxCtrls, OleCtrls, vcf1, Winsock,
  DBCtrls;

const
  CM_RESTORE = WM_USER + $1000; {自定义的“恢复”消息}
  WZGL_APP_NAME = 'WZGL_System';

const
  WM_WZGLNOTIFY = WM_USER + 100;  //自定义消息
  strNotifyTip = '物资管理应用服务器'; //状态区的提示信息
  ID_MAIN = 100; // 定义图标的ID


type
  TfrmMain = class(TForm)
    Panel1: TPanel;
    PopupMenu: TPopupMenu;
    NClose: TMenuItem;
    NShowForm: TMenuItem;
    StatusBar1: TStatusBar;
    ListView: TListView;
    Database: TDatabase;
    procedure FormDestroy(Sender: TObject);
    procedure NCloseClick(Sender: TObject);
    procedure NShowFormClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    function AddIcon(hwnd: HWND): Boolean; //在状态区添加图标
    function RemoveIcon(hwnd: HWND): Boolean; //从状态区移去图标
    procedure Notify(var Msg: TMessage); message WM_WZGLNOTIFY; //自定义消息处理函数
    procedure minimize(sender: Tobject); //定义最小化过程,赋给Application.OnMinimize;

    function DBConnect(aServerName, aDatabaseName, aUserName, aPassword: string): boolean;

    procedure CreateParams(var Params: TCreateParams); override;
    procedure RestoreRequest(var message: TMessage); message CM_RESTORE;

    { Public declarations }
  end;

var
  frmMain: TfrmMain;
  nid: NOTIFYICONDATA;
  i: integer;
implementation



uses WZGL_RDB, DBConnectFrm;

{$R *.DFM}

procedure TFrmMain.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.WinClassName := WZGL_APP_NAME;
end;


{处理“恢复”消息}

procedure TFrmMain.RestoreRequest(var message: TMessage);
begin
  if IsIconic(Application.Handle) = True then  //窗体是否最小化
    Application.Restore  //恢复窗体
  else
    Application.BringToFront; //提到前面显示
end;


//在状态区添加图标
function TfrmMain.AddIcon(hwnd: HWND): Boolean;
begin
  nid.cbSize := sizeof(NOTIFYICONDATA);
  nid.Wnd := hwnd;
  nid.uID := ID_MAIN;
  nid.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
  nid.uCallbackMessage := WM_WZGLNOTIFY;
  nid.hIcon := LoadIcon(hInstance, 'MAINICON');
  strCopy(nid.szTip, strNotifyTip);
  AddIcon := Shell_NotifyIcon(NIM_ADD, @nid);
end;

//从状态区移去图标
function TfrmMain.RemoveIcon(hwnd: HWND): Boolean;
var
  nid: NOTIFYICONDATA;
begin
  nid.cbSize := sizeof(NOTIFYICONDATA);
  nid.Wnd := hwnd;
  nid.uID := ID_MAIN;
  nid.uFlags := 0;
  RemoveIcon := Shell_NotifyIcon(NIM_DELETE, @nid);
end;

//自定义消息处理函数
procedure TfrmMain.Notify(var Msg: TMessage);
var
  Pt: TPoint;
begin
  case msg.LParam of
    WM_RBUTTONDOWN:    //当点击右键时,弹出快捷菜单
      begin
        SetForeGroundWindow(nid.wnd);
        GetCursorPos(Pt);
        Popupmenu.Popup(pt.x, pt.y);
      end;
  end;
end;

//定义最小化过程,赋给Application.OnMinimize;
procedure TfrmMain.minimize(sender: Tobject);
begin
  AddIcon(handle);
  ShowWindow(Application.handle, sw_hide)
end;


procedure TfrmMain.FormDestroy(Sender: TObject);
begin
  RemoveIcon(handle);
end;

procedure TfrmMain.NCloseClick(Sender: TObject);
begin
  close;
end;

procedure TfrmMain.NShowFormClick(Sender: TObject);
begin
  RemoveIcon(handle);
  ShowWindow(Application.handle, SW_SHOWNORMAL);
end;

procedure TfrmMain.FormCreate(Sender: TObject);
var
  serverName, databaseName, userName, password: string;
begin
  readFromIni(serverName, databaseName, userName, password);//读取配置文件
  if not DBConnect(ServerName, DatabaseName, UserName, Password) then //测试连接
    if not DBConnectExecute(TfrmDBConnect) then
      Application.Terminate;  //如果连接不成功,退出应用程序
  Application.OnMinimize := minimize;
end;

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if application.messagebox('请确认是否退出!', '服务器端应用程序监测', mb_iconinformation + mb_yesno) = IDno then
    abort;
end;

function TfrmMain.DBConnect(aServerName, aDatabaseName, aUserName, aPassword: string): boolean;
begin
  Result := True;
  Database.connected := False;
  Database.DriverName := 'mssql'; //驱动名称
  Database.Params.Values['Server Name'] := aServerName; //服务器名
  Database.Params.Values['Database Name'] := aDatabaseName; //数据库名
  Database.Params.Values['User Name'] := aUserName;//登录数据库用户名
  Database.Params.Values['Password'] := aPassword; //相应数据库用户的密码
  try
    Database.Connected := True;
  except
    result := False;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -