问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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函数可以实现。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 楼梯的水泥台阶上可以铺地板革吗 手机腾讯会议共享屏幕播放视频没声 delphi编译的程序窗体左上角图标如何更改 delphi图片左键菜单 我看见了大海 分段 delphi 中如何实现像家财通3那样的左侧可收缩的快捷菜单,不想用Raize或DevExpress delphi 写个仿天正左边的菜单栏!!! 或者告诉我怎么做也行??用什么控件??? Delphi左侧菜单 DELPHI制作左侧导航菜单问题。 王洪荣写的 我看见了大海 是不是真的 我看见了大海的主要内容 16寸电脑该设置多少分辨率急急急 <我终于看见了大海>作文 用键子怎么取消无障碍或者盲人模式? 江苏的“苏”到底是“江苏”的意思还是“苏州”的意思? 我已经看过大海了,我不能假装没有见过.什么意思 dnf80级魔法流男弹药的装备和首饰左右槽选择 江苏雷利估值多少合理?江苏雷利会跌到什么价位?江苏雷利发行价多少? 用洗衣机洗涤十分钟能洗干净吗 江苏南通哪个邮政局发行邮票? 江苏的意思是江南吗? 我看过的沙漠下暴雨,我看过海洋亲吻过鲨鱼,就是没看过你……问这首歌歌曲名是什么 delphi托盘鼠标左键弹菜单,怎么实现 DELPHI 好几多菜单? 卢卡机器人点读机二代好还是三代好? 求2013年注册安全工程师的完整题库!我的电子邮箱:904003666@qq.com Delphi怎样在窗口添加菜单 DELPHI标题栏添加菜单栏 delphi的菜单问题 Delphi导航菜单 delphi 制作菜单栏 如何用delphi构造树型菜单(在线等) 急需delphi制作菜单的代码 delphi 模拟键盘法对当前窗口鼠标左键单击最小化怎么做? delphi用MainMenu1做了个菜单栏,本来是一行的,但是一缩小当前窗口就成了两行了,。。。。。。 每天点几个红包,红包里显示异常*一天,需要人脸识别,问题是没收到人脸识别通知 为什么已经人脸识成功了还是不能收发红包? 中国人在沙特阿拉伯银行如何开户,定期利息是多少 阿拉伯国家 银行存款 有利息吗 阿拉伯瑞士银行的钱怎样才:证明是存在的?我年过半百请直接回答可以吗? 银行 存款单上阿拉伯数字为400.5元 大写为:肆佰圆伍角整 银行人员说不对应写为:肆佰零五角 银行存款单存款金额的书写问题,存款金额那栏:写金额数目的时候单位写成了“元”没关系吗