就是最小化后有一个小图标出现在系统时间旁,一点就可以恢复原来大小
解决方案 »
- 如何新建一个控件包。
- D7RegClean.exe
- 关于继承问题
- 关于update的语句
- 利用enlib中的打印控件如何用代码设置页面的方向.
- 窗体上用canvas 方法画线,怎么打开另外的窗体,后面的线就会消失了,怎么处理才能让画的线始终存在呀.或者实现重画也行?
- 关于连接数据库异常
- 为什么总是说 " Incompatible types: 'Char' and 'String' " ?
- 五一散分(二)
- 如何使文件和我的程序关联?
- 100分不知够吗?菜鸟用serversocket和clientsocket两个控件做了服务器端和客户端,我的服务器运行之后,我在两台机器上开了两个客户端连
- 求弧长:
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;
implementationuses 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;