当前位置:主页>销售管理软件> 列表

程序的右击关于是怎么做的?

财务软件版1楼: 程序最小化后在在任务栏右击多一个关于的选项
这是怎么做的?

2楼: 托盘程序 如用友财务软件报价

3楼: cooltray控件

4楼: 生成系统托盘

一、 引用
uses shellApi;

二、 声明

private
{ Private declarations }
Tray: NOTIFYICONDATA;
//最小化过程(载获系统事件)
procedure ToMinimize(var msg:TMessage); message WM_SYSCOMMAND;
//显示系统托盘
procedure ShowInTray ;
//单击图标弹出的菜单
procedure TrayMenu(var Msg: TMessage); message WM_USER;

三、 载获系统的最小化事件

{函数说明:程序最小化事件(载获系统事件)}
procedure TfHWDataTransport.ToMinimize(var msg:TMessage);
begin
if msg.WParam=SC_MINIMIZE then
Begin
ShowWindow(Application.Handle,sw_minimize); // 最小化、隐藏窗体
ShowWindow(Application.Handle,sw_hide);
ShowInTray; //显示系统托盘
end
else
//非最小化消息调用系统的窗口函数处理
DefWindowProc(self.Handle, msg.Msg, msg.WParam, msg.LParam);
end;

四、 显示系统托盘

{函数说明:窗体最小化后,显示在托盘中}
procedure TfHWDataTransport.ShowInTray;
begin
Tray.cbSize := sizeof(Tray);
Tray.Wnd := Self.Handle;
Tray.uFlags := NIF_ICON + NIF_MESSAGE + NIF_TIP;
Tray.uCallbackMessage := WM_USER;
Tray.hIcon := application.Icon.Handle ;
Tray.szTip := ''数据采集'';
Shell_NotifyIcon(NIM_ADD,@Tray);
end;

五、 托盘的单击事件

{函数说明:托盘的鼠标事件:左键单击弹出窗口;右键单击托盘中的图标,显示快捷菜单}
procedure TfHWDataTransport.TrayMenu(var Msg: TMessage);
var
X,Y:Tpoint;
J,K:Integer;
Begin
GetCursorPos(X);
GetCursorPos(Y);
J := X.X;
K := Y.Y;
if (Msg.LParam = WM_LBUTTONDOWN) then
Begin
{设置窗口位于最顶层}
SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height, SWP_SHOWWINDOW);
ShowWindow(Application.Handle,SW_SHOWNORMAL );
SetWindowPos(Handle,HWND_NOTOPMOST,Left,Top,Width,Height, SWP_SHOWWINDOW);
End;

{//另定义一右键菜单与之关联
if (Msg.LParam = WM_RBUTTONDOWN) then
PopupMenu_Tray.Popup(J,K);
}
end;

六、 释放托盘

{函数说明:程序释放事件,删除托盘小图标}

procedure TfHWDataTransport.FormDestroy(Sender: TObject);
begin
{删除托盘中的图标}
Shell_NotifyIcon(NIM_DELETE,@Tray);
end;

5楼: d

6楼: 接受答案了.