Delphi动态创建菜单

Posted jijm123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 动态添加系统菜单

Delphi 怎么创建动态库?

使用 FireDac 在 Delphi 中动态创建和调用存储过程的正确方法是啥?

Delphi:RzPageControl(pagecontrol)实现多标签的动态添加,切换,关闭

Delphi控件cxGrid 如何动态创建列?