Delphi动态创建菜单
在程序运行中动态创建菜单,主要使用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动态创建菜单的更多相关文章
- Delphi动态创建组件,并释放内存
开发所用delphi版本是xe2,效果图如下: 代码如下: ---------------------------------------------------------------------- ...
- PopupMenu动态创建菜单
1.TPopupMenu一条横线在Caption输入一个'-'就可以了.2.在Caption输入名字之后加入一个&就可以不显示快捷键,比如: 退出& 这样退出按钮的快捷键就不会显示出 ...
- Delphi 动态创建组件,单个创建、单个销毁
效果图如下: 实现部分代码如下: var rec: Integer = 0; //记录增行按钮点击次数 implementation {$R *.dfm} //动态释放单个组件内存,即销毁组件 pro ...
- DELPHI 动态 创建和释放 多个 EDIT 控件
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, ...
- delphi动态创建控件
动态创建控件 其实动态创建控件很简单,相信看过本文后你会全明白的. 1 先在单元的initialization 部分注册它,(这样在单元使用时会自动注册的)如: RegisterClass( TBut ...
- Delphi动态添加菜单
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- DELPHI动态创建窗体
//第一种方式 procedure TForm1.btn1Click(Sender: TObject); begin With TForm2.Create(Application) do Try Sh ...
- MFC动态创建菜单
http://blog.csdn.net/csdnzhwk/article/details/47395639
- Delphi动态添加控件
{动态添加导航} var Panl:Tpanel; MainPage,Subpage:TPageControl; TabSheet1: TTabSheet; ToolBar2: TToolBar; S ...
随机推荐
- PHP工程师学习计划
从开始学习PHP到现在,只是大致的对PHP的一些基础的东西了解一下,从没有制定一个较为完整的学习计划,所以自己的编程水平一直都处在基本的入门阶段,所以结合自己的实际情况制定了一个感觉还算合理的学习计划 ...
- Codeforces 884f F. Anti-Palindromize
题 OvO http://codeforces.com/contest/884/problem/F (Educational Codeforces Round 31 - F) 884f 解 题目标签 ...
- Navicat导出表结构
SQL Server导出表结构 Oracle导出表结构
- web大文件上传断点续传源码
总结一下大文件分片上传和断点续传的问题.因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况.http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件 ...
- 什么是CPython
CPython是特指C语言实现的Python,就是原汁原味的Python. 之所以使用CPython这个词,是因为Python还有一些其它的实现,比如Jython,就是Java版的Python,还有烧 ...
- JavaWeb-RESTful(二)_使用SpringMVC开发RESTful_上
JavaWeb-RESTful(一)_RESTful初认识 传送门 JavaWeb-RESTful(二)_使用SpringMVC开发RESTful_上 传送门 JavaWeb-RESTful(三)_使 ...
- UCenter网站部署
搭建LAMP环境部署UCenter LAMP环境: Linux+Apache+mysql+php 用来搭建动态网站或者服务器的开源软件 一.需要安装的软件 [root@tiandong ~]# yu ...
- Android学习_内容提示器
内容提供器 1. 创建自己的内容提供器 1) 继承ContentProvider类,重写6个方法:onCreate().query().insert().update().delete ...
- 识别C++编译器编译标准
cout << __cplusplus<<endl; C++03:__cplusplus = 199711L C++11:__cplusplus = 201103L
- 微信小程序<web-view>出现{"base_resp":{"ret":-1}}
最近在使用小程序<web-view>这个标签加载一个https网页的时候出现了{"base_resp":{"ret":-1}}这一个问题 搞了好久~ ...