procedure TForm1.Button1Click(Sender: TObject);
var
MainMenu:TMainMenu;
MenuItem:TMenuItem;
begin
//创建主菜单对象,并设置主窗口的菜单为MainMenu对象
MainMenu:=TMainMenu.Create(Self);
Self.Menu:=MainMenu;

//创建MainMenu主菜单的第一级菜单对象 MainMenu.Items.Add
MenuItem:=TMenuItem.Create(MainMenu);
MenuItem.Caption:='一级菜单';
MainMenu.Items.Add(MenuItem);

//创建MainMenu主菜单的第二级子菜单对象 MainMenu.Items[0].Add
MenuItem:=TMenuItem.Create(MainMenu);
MenuItem.Caption:='二级菜单';
MainMenu.Items[0].Add(MenuItem);

//创建MainMenu主菜单的第三级子菜单对象 MainMenu.Items[0].Items[0].Add
MenuItem:=TMenuItem.Create(MainMenu);
MenuItem.Caption:='三级菜单';
MainMenu.Items[0].Items[0].Add(MenuItem);
// 用Items[0]...这种形式,可以创建 四级、五级直到N级菜单都可以
MenuItem:=TMenuItem.Create(MainMenu);
MenuItem.Caption:='四级菜单';
MainMenu.Items[0].Items[0].Items[0].Add(MenuItem);

end;

//弹出菜单事件
procedure   TForm1.Button1Click(Sender:   TObject);   
  var   
      pm:   TPopupMenu;   
      mi:   TMenuItem;   
  begin   
      pm   :=   TPopupMenu.Create(self);   
      mi   :=   TMenuItem.Create(self);   
      mi.Caption   :=   '新建(&N)';   
      pm.Items.Add(mi);   
      mi   :=   TMenuItem.Create(self);   
      mi.Caption   :=   '打开(&O)';   
      pm.Items.Add(mi);   
      mi   :=   TMenuItem.Create(self);   
      mi.Caption   :=   '-';   
      pm.Items.Add(mi);   
      mi   :=   TMenuItem.Create(self);   
      mi.Caption   :=   '退出(&X)';   
      pm.Items.Add(mi);   
      mi.OnClick   :=   miClick;   
      Button1.PopupMenu   :=   pm;   
  end;   
  //   在类里定义   
  procedure   TForm1.miClick(Sender:   TObject);   
  begin   
      Close;   
  end;

在系统菜单中添加自新选项:
Append(GetSystemMenu(handle,false),MF_SEPARATOR,0,'');
Append(GetSystemMenu(handle,false),MF_STRING,200,'About(&A)');

WM_SysCommand消息处理函数
procedure SystemMenuCommand(var Msg:TWMMENUSELECT);message WM_SysCommand;
procedure TForm1.SystemMenuCommand(var Msg:TWMMENUSELECT);
begin
if Msg.IDItem=200 then
Form2:=TForm2.Create(Application);
Form2.Show;
Form2.Update;
end;
inherited;
end;

Delphi动态创建MainMenu和PopupMenu菜单的方法相关推荐

  1. html div 移除,js动态创建及移除div的方法

    本文实例讲述了js动态创建及移除div的方法.分享给大家供大家参考.具体实现方法如下: //创建div function createDiv(){ if(document.getElementById ...

  2. c语言怎样响应右键弹出窗口,MFC创建右键弹出菜单的方法

    本文实例讲述了MFC创建右键弹出菜单的方法.分享给大家供大家参考.具体实现方法如下: ①.添加一个菜单资源,ID为IDM_RIGHTMENU.因为在显示右键菜单时顶级菜单是不显示的,所以可以给它设置任 ...

  3. Delphi 动态创建类

    昨天在看 Java Web 开发时有看到servlet 通过反射动态创建类,想到Delphi中能否实现. 环境 Win10 x64 , Delphi 10.4  需引用 System.Rtti : 发 ...

  4. 动态创建html元素的几种方法

    可以通过以下几种方式动态创建html元素: 1.使用jQuery创建元素的语法 2.把动态内容存放到数组中,再遍历数组动态创建html元素 3.使用模版 □ 使用jQuery动态创建元素追加到jQue ...

  5. php动态创建属性,PHP使用方法重载实现动态创建属性的get和set方法

    在PHP中,我们不能够直接通过方法名相同,签名不同的方法来@R_404_369@重载,因为PHP是弱数据类型,不能很好的区分签名.但是,可以在PHP的类中运用__call()方法来@R_404_369 ...

  6. Python+tkinter动态创建与销毁组件小案例

    本文代码演示了如何在tkinter窗体上动态创建组件以及销毁组件的方法. import tkinter import tkinter.messagebox import tkinter.simpled ...

  7. ASP.NET AJAX Advance Tips Tricks (11) 三种方法动态创建Tooltip

    前言 如何动态创建提示框(Tooltip)是ASP.NET Forum里的常见问题之一,在做技术支持时,我曾在英文博客上总结过ASP.NET和ASP.NET AJAX环境下如何动态创建提示框的三种常见 ...

  8. Unity换脸插件OpenCvForUnity动态创建面部特征点数据

    因最近项目忙,暂停对此插件进行深一步的了解以及使用,最近有些小伙伴们私信我想看进一步的更新.这两天抽空进行针对性的问题进行了解,并解决动态创建面部特征点数据的方法整理一下,表达能力有限,代码来凑,尽量 ...

  9. VC++动态创建和删除菜单(转)

    在应用程序中,往往要根据当前的操作来增加相应的菜单.动态增加菜单的方法有多 种,本文只讲述利用资源编辑器预创建菜单资源,然后在程序运行中动态加入(或删 除)到主菜单中去的方法. 一.用AppWizar ...

  10. delphi 自定义popupmenu_Delphi PopupMenu菜单为ListView的每个Items使用[原创]

    马上注册,结交更多好友,享用更多功能^_^ 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 『C.』Study... 于 2012-6-14 11:05 编辑 最近做一个Case就 ...

最新文章

  1. hdu 2602 Bone Collector
  2. 科学计数怎么转换成数字_手持式尘埃粒子计数器价格多少钱
  3. 程序员学好英语的方法(转)
  4. 2016/06/22 中色启动筹码分析作业
  5. 从武汉模式走向中国模式,打造人工智能产业发展的“中国样板”
  6. delphi xe3 mysql,delphi10.3安装使用mySQL
  7. 为什么Bert的三个Embedding可以进行相加?
  8. 数据结构笔记(参考王道考研系列)
  9. ubuntu18.04使用网易云音乐 ubuntu网易云音乐打不开怎么办? ubuntu安装网易云音乐
  10. 警惕“不续签劳动合同”式裁员
  11. 纽约客:变态连环杀手正在被算法迅速围剿
  12. 撰写合格的REST API
  13. edge浏览器如何设置始终在新标签页中打开?
  14. MM定理(Modigliani-Miller)证明与图解
  15. (三)Position Rank代码解读(一)
  16. 数值计算(三)-插值法(2)牛顿插值法
  17. Android中实现截图的几种方式
  18. java-线程的实现方式
  19. PFM与PWM的技术总结
  20. 苹果无线网服务器改什么速度快,苹果改dns提高网速(iphone国内最快的dns)

热门文章

  1. Linux 下的桌面指针时钟
  2. java base64解码乱码_java base64解码 怎么是乱码呢
  3. 【老生谈算法】matlab实现方位角计算源码——方位角计算
  4. 帆软折线图设置红色警戒线
  5. html用户名和用户密码验证,js实现用户名和密码的校验
  6. ES设置用户名和密码
  7. 以太网进化历程半景-从10Mbps到1Tbps
  8. 数据结构 WSADATA
  9. GIS招聘 | 青海省省直事业单位(含地信、测绘等专业)
  10. Linux进程调度策略