delphi菜单项
发布网友
发布时间:2022-05-26 11:41
我来回答
共2个回答
热心网友
时间:2023-10-15 11:12
通常在应用程序的主窗体中,利用鼠标左键点击左上角的图标,会弹出一个菜单,称之为“系统菜单”,在窗体中并没有系统菜单对应的组件,所以有时需要定制系统菜单时就比较麻烦。可以通过下面的步骤实现:
1) 在系统菜单上添加所需的菜单项。
2) 为新添加的菜单项定义OnClick 事件的处理过程。
在该例程中,在系统菜单中添加了一个“前端显示( A )”菜单项,通过该菜单项,可以使窗体始终显示在最前端或为普通窗体模式。具体实现过程如下:
1) 通过菜单File | New Application 创建一个新的工程。
2) 添加窗体Form1 的OnCreate 事件的处理过程如下:
procere TForm1.FormCreate(Sender:TObject);
begin
//设置系统菜单
AppendMenu(GetSystemMenu(Handle,False),MF_SEPARATOR,0,'');
AppendMenu(GetSystemMenu(Handle,False),MF_STRING,200,'前端显示(&A)');
3)在文件Unit1.pas的uses语句中增加如下代码:
uses
Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,Menus;
...
4)在TForm1的类型定义中,添加系统菜单中新建菜单项的OnClick事件的处理过程的声明:
type
TForm1=class(TForm)
procereFormCreate(Sender:TObject);
procereSystemMenuCommand(varMsg:TWMMENUSELECT);
messageWM_SysCommand;
private
5)手工添加系统菜单中新建菜单项的OnClick事件的处理过程如下:
procereTForm1.SystemMenuCommand(varMsg:TWMMENUSELECT);
begin
ifMsg.IDItem=200then
begin
ifForm1.FormStyle=fsNormalthen
begin
//将窗体设置为总在前端显示
Form1.FormStyle:=fsStayOnTop;
//重新设置系统菜单
AppendMenu(GetSystemMenu(Handle,False),MF_SEPARATOR,0,'');
AppendMenu(GetSystemMenu(Handle,False),MF_STRING,200,'前端显示(&A)');
//在新添加的菜单项前增加一个选中标志
ModifyMenu(GetSystemMenu(Handle,False),200,MF_CHECKED,200,
'前端显示(&A)');
end
else
begin
//将窗体设置为普通模式
Form1.FormStyle:=fsNormal;
//重新设置系统菜单
AppendMenu(GetSystemMenu(Handle,False),MF_SEPARATOR,0,'');
AppendMenu(GetSystemMenu(Handle,False),MF_STRING,200,'前端显示(&A)');
end;
end;
inherited;
end;
参考资料:http://www.pcppc.cn/kaifa/Delphi/kaifa_119176.html
热心网友
时间:2023-10-15 11:13
用ShellAPI中的Shell_NotifyIcon函数可以实现。