在程序运行中动态创建菜单,主要使用TMeunItem类,所有菜单的条目都是TMenuItem的一个实例。

打开Delphi7集成开发环境,在默认新建工程里,放置一个Button1按钮和MainMenu1菜单项,设置Button1的Caption属性为添加主菜单。

在Button1的Object Inspector选项卡设置Button1的OnClick响应事件,代码如下:

procedure TForm1.Button1Click(Sender: TObject);

var

files,edit:TMenuItem;

begin

files:=TMenuItem.Create(self);

edit:=TMenuItem.Create(self);

files.Caption:='文件';

edit.Caption:='编辑';

Form1.MainMenu1.AutoHotkeys:=mamanual;//指定为手动快捷键; 默认是自动添加的

Form1.MainMenu1.Items.Add(files);

Form1.MainMenu1.Items.Add(edit);

end;

F9运行程序,点击添加主菜单按钮后,可以看到程序多了两个菜单项,分别为文件和编辑

关闭程序,在窗体上再放置一个Button2按钮,设置Captain属性:添加菜单项,同样的方法给Button2添加OnClick响应函数,代码如下:

procedure TForm1.Button2Click(Sender: TObject);

var

files,edit,new,copy:TMenuItem;

begin

files:=TMenuItem.Create(self);

edit:=TMenuItem.Create(self);

files.Caption:='文件';

edit.Caption:='编辑';

Form1.MainMenu1.AutoHotkeys:=mamanual;

Form1.MainMenu1.Items.Add(files);

Form1.MainMenu1.Items.Add(edit);

new:=TMenuItem.Create(self);

copy:=TMenuItem.Create(self);

new.Caption:='新建';

copy.Caption:='拷贝';

files.Add(new);

edit.Add(copy);

end;

F9运行程序,可以发现在文件菜单下增加了新建菜单项,在编辑菜单增加了拷贝菜单项

在Unit1.pas中为我们添加的菜单项添加响应事件,在Form1类的private中添加方法声明,在implement中编写函数具体代码如下:

private

{ Private declarations }

procedure test(Sender:TObject);

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.test(Sender: TObject);

begin

showmessage('测试动态添加菜单') ;

end;

同时在上面的Button2的响应方法中添加两行代码,为新建和复制按钮OnClick添加响应方法test(),添加后Button2的OnClick响应方法如下:

procedure TForm1.Button2Click(Sender: TObject);

var

files,edit,new,copy:TMenuItem;

begin

files:=TMenuItem.Create(self);

edit:=TMenuItem.Create(self);

files.Caption:='文件';

edit.Caption:='编辑';

Form1.MainMenu1.AutoHotkeys:=mamanual;

Form1.MainMenu1.Items.Add(files);

Form1.MainMenu1.Items.Add(edit);

new:=TMenuItem.Create(self);

copy:=TMenuItem.Create(self);

new.Caption:='新建';

copy.Caption:='拷贝';

new.OnClick:=test;

copy.OnClick:=test;

files.Add(new);

edit.Add(copy);

end;

F9运行程序,点击添加菜单项后,再点击文件-新建菜单,会弹出对话框。证明菜单项的响应事件添加成功。

Delphi动态创建菜单的更多相关文章

  1. Delphi动态创建组件,并释放内存

    开发所用delphi版本是xe2,效果图如下: 代码如下: ---------------------------------------------------------------------- ...

  2. PopupMenu动态创建菜单

    1.TPopupMenu一条横线在Caption输入一个'-'就可以了.2.在Caption输入名字之后加入一个&就可以不显示快捷键,比如: 退出&  这样退出按钮的快捷键就不会显示出 ...

  3. Delphi 动态创建组件,单个创建、单个销毁

    效果图如下: 实现部分代码如下: var rec: Integer = 0; //记录增行按钮点击次数 implementation {$R *.dfm} //动态释放单个组件内存,即销毁组件 pro ...

  4. DELPHI 动态 创建和释放 多个 EDIT 控件

    unit Unit1;   interface   uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, ...

  5. delphi动态创建控件

    动态创建控件 其实动态创建控件很简单,相信看过本文后你会全明白的. 1 先在单元的initialization 部分注册它,(这样在单元使用时会自动注册的)如: RegisterClass( TBut ...

  6. Delphi动态添加菜单

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  7. DELPHI动态创建窗体

    //第一种方式 procedure TForm1.btn1Click(Sender: TObject); begin With TForm2.Create(Application) do Try Sh ...

  8. MFC动态创建菜单

    http://blog.csdn.net/csdnzhwk/article/details/47395639

  9. Delphi动态添加控件

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

随机推荐

  1. moment.js 使用方法记录

    操作 设值/赋值 1. 具体方法. 1)毫秒(millisecond) moment().millisecond(Number); moment().millisecond(); // Number ...

  2. D - Beautiful Graph CodeForces - 1093D (二分图染色+方案数)

    D - Beautiful Graph CodeForces - 1093D You are given an undirected unweighted graph consisting of nn ...

  3. 【转载】MCMC和Gibbs Sampling算法

    转载随笔,原贴地址:MCMC和Gibbs Sampling算法 本文是整理网上的几篇博客和论文所得出来的,所有的原文连接都在文末. 在科学研究中,如何生成服从某个概率分布的样本是一个重要的问题.如果样 ...

  4. angularjs 实现下拉框编辑数据回显

    https://www.cnblogs.com/janice-jia/p/9764938.html 正常的js回显选择,需要添加 select ="selected",angula ...

  5. mysql的数据库存放的路径以及安装路径

    1.简单查看路径 1.查看数据库的存放路径 进入mysql终端mysql>show variables like '%datadir%'; 2.查看文件安装路径 [root@hadoop01 e ...

  6. 题解 【POJ1722】 SUBTRACT

    先讲下题目意思 给定一个长度为\(n\)的序列\((1 \leq n \leq 100)\), 每次合并两个元素\(i,i+1\),即将\(i,i+1\)变为一个新的元素,权值为\(a[i]-a[i+ ...

  7. 使用CSS3 will-change提高页面滚动、动画等渲染性能----------------------------引用

    Chris Ruppel当其使用background-attachment: fixed实现背景图片不随滚动条滚动而滚动效果的时候, 大家肯定会好奇,这到底施了什么魔法,可以让渲染提升如此之显著.3个 ...

  8. Vue 工程化最佳实践

    目录结构 总览   api 目录用于存放 api 请求,文件名与模型名称基本一致,文件名使用小驼峰,方法名称与后端 restful 控制器一致.   enums 目录存放 常量,与后端的常量目录对应 ...

  9. bzoj3307 雨天的尾巴题解及改题过程(线段树合并+lca+树上差分)

    题目描述 N个点,形成一个树状结构.有M次发放,每次选择两个点x,y对于x到y的路径上(含x,y)每个点发一袋Z类型的物品.完成所有发放后,每个点存放最多的是哪种物品. 输入格式 第一行数字N,M接下 ...

  10. D. Eternal Victory(dfs + 思维)

    D. Eternal Victory time limit per test 2 seconds memory limit per test 256 megabytes input standard ...