unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, ComCtrls;

type
TMainForm = class(TForm)
MainMenu1: TMainMenu;
Button1: TButton;
N0000000001: TMenuItem;
RichEdit1: TRichEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure N0000000001Click(Sender: TObject);
private
procedure MyClick(Sender: TObject);
{ Private declarations }
public
{ Public declarations }
end;

var
MainForm: TMainForm;
subItemName:String;

implementation

{$R *.dfm}

procedure TMainForm.FormCreate(Sender: TObject);
var addSubItem:TMenuItem;
i:Integer;
N:Integer;
SubMenuItemSource:String;
begin
N:=5;
SubMenuItemSource:='动态-';
for i:=0 to N do //N等于要添加动态菜单数目,需事先定义为数值型变量,并赋值
begin
addSubItem:= TMenuItem.Create(Self);
addSubItem.Name := 'A'+IntToStr(i);
addSubItem.Caption := SubMenuItemSource+IntToStr(i);// 步骤1的SubMenuItemSource应先赋值
//FileOpenItem.Add(addSubItem);//在名称为FileOpenItem的菜单项下添加子菜单
addSubItem.OnClick:=self.MyClick;//步骤2的MyClick(),自定义菜单要响应的事件
self.MainMenu1.Items.Add(addSubItem);
end
end;

procedure TMainForm.MyClick(Sender: TObject); //动态菜单OnClick事件响应
begin
ShowMessage(TMenuItem(Sender).Caption); //显示选中的动态菜单标题,
end;

procedure TMainForm.Button1Click(Sender: TObject);
var addSubItem:TMenuItem;
i:Integer;
N:Integer;
SubMenuItemSource:String;
begin
self.MainMenu1.Items[0].OnClick:=nil; //变为无事件
N:=5;
SubMenuItemSource:='KKKKK-';
subItemName:=subItemName+'T';
for i:=0 to N do //N等于要添加动态菜单数目,需事先定义为数值型变量,并赋值
begin
addSubItem:= TMenuItem.Create(Self);
addSubItem.Name := subItemName+IntToStr(i);
addSubItem.Caption := SubMenuItemSource+IntToStr(i);// 步骤1的SubMenuItemSource应先赋值
//FileOpenItem.Add(addSubItem);//在名称为FileOpenItem的菜单项下添加子菜单
addSubItem.OnClick:=self.MyClick;//步骤2的MyClick(),自定义菜单要响应的事件
self.MainMenu1.Items[0].Add(addSubItem);
end
end;

procedure TMainForm.N0000000001Click(Sender: TObject);
begin
showmessage('aaa');
end;

end.

Delphi动态添加菜单的更多相关文章

  1. Delphi动态添加控件

    {动态添加导航} var Panl:Tpanel; MainPage,Subpage:TPageControl; TabSheet1: TTabSheet; ToolBar2: TToolBar; S ...

  2. Delphi动态创建菜单

    在程序运行中动态创建菜单,主要使用TMeunItem类,所有菜单的条目都是TMenuItem的一个实例. 打开Delphi7集成开发环境,在默认新建工程里,放置一个Button1按钮和MainMenu ...

  3. 【Android初级】如何动态添加菜单项(附源码+避坑)

    我们平时在开发过程中,为了灵活多变,除了使用静态的菜单,还有动态添加菜单的需求.今天要分享的功能如下: 在界面的右上角有个更多选项,点开后,有两个子菜单:关于和退出 点击"关于", ...

  4. MFC 单文档中动态添加菜单项和响应菜单事件

    新建一个单文档程序 在查看菜单项中增加两个子菜单,分别为隐藏工具栏(ID_HIDE),新建菜单(ID_NEWMENU) 在Resource.h中增加一个ID_NEWMENU宏 #define ID_N ...

  5. menuStrip1动态添加菜单及快捷键

    public partial class FormMkTest : Form { public FormMkTest() { InitializeComponent(); } private void ...

  6. ObjectARX动态添加AutoCAD传统下拉菜单入门篇(一)

    ObjectARX动态添加传统下拉菜单入门篇 图文by edata  , 转载注明出处 http://www.cnblogs.com/edata AutoCAD 添加传统下拉菜单有很多种方式,比较典型 ...

  7. EasyUI创建异步树形菜单和动态添加标签页tab

    创建异步树形菜单 创建树形菜单的ul标签 <ul class="easyui-tree" id="treeMenu"> </ul> 写j ...

  8. 通过源码了解ASP.NET MVC 几种Filter的执行过程 在Winform中菜单动态添加“最近使用文件”

    通过源码了解ASP.NET MVC 几种Filter的执行过程   一.前言 之前也阅读过MVC的源码,并了解过各个模块的运行原理和执行过程,但都没有形成文章(所以也忘得特别快),总感觉分析源码是大神 ...

  9. ContextMenuStrip 动态添加多级子菜单

    1.首先要实例化几个ToolStripItem(要为某一父菜单添加几个子菜单就实例化几个):方法如下: /*添加子菜单*/ ToolStripItem ts_1 = new ToolStripMenu ...

随机推荐

  1. Linux系统学习之进程管理

    什么是进程? 进程表示程序的一次执行过程,它是应用程序的运行实例,是一个动态的过程.或者可以更简单地描述为:进程是操作系统当前运行的程序.当一个进程开始运行时,就要启动了这个过程.进程包括动态的执行的 ...

  2. 深入浅出的webpack4构建工具--webpack4+vue+route+vuex项目构建(十七)

    阅读目录 一:vue传值方式有哪些? 二:理解使用Vuex 三:webpack4+vue+route+vuex 项目架构 回到顶部 一:vue传值方式有哪些? 在vue项目开发过程中,经常会使用组件来 ...

  3. eureka client服务续约源码分析

    必备知识: 1.定时任务 ScheduledExecutorService public class demo { public static void main(String[] args){ Sc ...

  4. C++获取单链表的倒数第k个节点

    /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ c ...

  5. 《Google软件测试之道》简介

    <Google软件测试之道>,一直听朋友讲起这本书,出于琐事太多,一直没机会拜读,最近部门架构觉得我们IT部门的技术太low,就给我们挑选了一些书籍,让我们多看看... 个人的一种学习习惯 ...

  6. Kubernetes-v1.12.0基于kubeadm部署

    1.主机规划 #master节点(etcd/apiserver/scheduler/controller manager)master.example.cometh0: 192.168.0.135et ...

  7. CF835F Roads in the Kingdom/UOJ126 NOI2013 快餐店 树的直径

    传送门--CF 传送门--UOJ 题目要求基环树删掉环上的一条边得到的树的直径的最小值. 如果直接考虑删哪条边最优似乎不太可做,于是考虑另一种想法:枚举删掉的边并快速地求出当前的直径. 对于环上的点, ...

  8. (转)Linux SSH配置和禁止Root远程登陆设置

    原文 一.修改vi /etc/ssh/sshd_config 文件 1.修改默认端口:默认Port为22,并且已经注释掉了:修改是把注释去掉,并修改成其它的端口. 2.禁止root用户远程登陆:修改P ...

  9. C# 如何物理删除有主外键约束的记录?存储过程实现

    十年河东,十年河西,莫欺少年穷 本篇主旨是如何物理删除有主外键约束的记录!那么,我们从主外键走起! 下面新建三张有主外键约束的表,分别为:系/学院表,专业班表,学生表,如下: CREATE TABLE ...

  10. 【LGR-049】洛谷7月月赛

    Preface Luogu八月月赛都结束了我才来补七月月赛 这次月赛还是很狗的,在绍一的晚上恰逢刮台风,然后直接打到一半断网了 结果都没有交上去GG 感觉这次难度适中,解法也比较清新自然吧,十分给个九 ...