Delphi动态创建菜单

摘要:
在程序运行中动态创建菜单,主要使用TMeunItem类,所有菜单的条目都是TMenuItem的一个实例。打开Delphi7集成开发环境,在默认新建工程里,放置一个Button1按钮和MainMenu1菜单项,设置Button1的Caption属性为添加主菜单。证明菜单项的响应事件添加成功。

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

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

Delphi动态创建菜单第1张

在Button1的ObjectInspector选项卡设置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;

Delphi动态创建菜单第2张

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

Delphi动态创建菜单第3张

关闭程序,在窗体上再放置一个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运行程序,可以发现在文件菜单下增加了新建菜单项,在编辑菜单增加了拷贝菜单项

Delphi动态创建菜单第4张

在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;

Delphi动态创建菜单第5张

Delphi动态创建菜单第6张

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

Delphi动态创建菜单第7张

免责声明:文章转载自《Delphi动态创建菜单》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Win32汇编操作注册表[Android Memory] App调试内存泄露之Context篇(上)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

DELPHI 关于内存数据与 JSON

正在用 WebBroker 写一个小网站,感受颇多:1、如果是写一个小东西,应该先考虑下 WebBroker,因为它是分分钟即可上手的。2、如果要写一个大东西,或许也应该考虑下 WebBroker,因为相比其他它有着最高的灵活度(但这只是想像,因为我只是写了一个小东西)。3、Delphi 3 就有了 WebBroker,可惜现在才开始使用它;随着“服务器”...

DELPHI中的消息处理机制(三种消息处理方法的比较,如何截断消息)

DELPHI中的消息处理机制 Delphi是Borland公司提供的一种全新的WINDOWS编程开发工具。由于它采用了具有弹性的和可重用的面向对象Pascal(object-orientedpascal)语言,并有强大的数据库引擎(BDE),快速的代码编译器,同时又提供了众多出色的构件。受到广大编程人员的青睐。在众多的编程语言(如VB,PowerBuild...

Pascal精要笔记

Pascal精要笔记 Pascal语言的大小写不敏感特性有一个例外:控件包中的Register 过程必须以大写字母R开始,因为需要与C++Builder 兼容。 ,编译器不编译代码中的空格、空行和Tab键空格,这些元素通称为空白,它们只用来提高代码的可读性,不影响编译过程。(也就是说: = 这样的写法没有问题,我原来还以为由问题那!) 记住要用代码模板(方便...

DELPHI第三方控件及组件大全(安装方法与使用)

一,DELPHI第三方控件安装方法介绍 1、对于单个控件,Componet–>install component..–>PAS或DCU文件–>install; 2、对于带*.dpk文件的控件包,File–>Open(下拉列表框中选*.dpk)–>install即可; 3、对于带*.bpl文件的控件包,Install P...

delphi 大文件的读写 使用 MapviewOffile

unit filemap; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; const fileName = 'myTest.txt'; type TForm1 =...

Delphi 中的字符串函数(6) StrUtils 中的 Ansi 字符串函数

//从左右两端提取指定数目的字符串: AnsiLeftStr、AnsiRightStr var ss,s: AnsiString; begin ss := 'abcdefg'; s := AnsiLeftStr(ss, 2); ShowMessage(s); {ab} s := AnsiRightStr(ss, 2); Show...