Delphi带历史信息的菜单实例
实例锐明
在有些软件中,菜单栏中可以记录已经打开过的文件信息,使用户操作简单、快捷。当用户要打开己打开过的文件时,不需要重复查找,只需选择菜单中打开过的文件,即可实现打开该文件的操作。运行本例,效果如果所示。

效果如图所示
技术要点
本例使用的是动态插入菜单的技术,利用菜单的动态插入技术,可以完成在菜单中记录打开过文档的功能,即当打开一个文件后,将这个文件的完整路径插入到菜单的相应位置。主要用到了TMainMenu组件的Insert()方法。在菜单的OnChange事件中。为菜单项指定相应的事件。动态插入菜单项的代码如下:
procedure TForm1.N2Click(Sender: TObject);
var
QQ:Tmenuitem;
begin
QQ:=Tmenuitem.Create(nil);
if OpenDialog1.Execute then
begin
QQ.Caption:=OpenDialog1.FileName;
MainMenu1.Items.Items[0].Insert(3,QQ);
end;
end;
注意:动态插入菜单项,首要创建TMenuItem菜单对象。
实现过程
1.新建一个工程,该工程会自动创建一个主窗体,默认命名为Form1.
2.在窗体上添加TMainMenu组件和TOpenDialog组件。
3.程序代码如下:
procedure TForm1.N2Click(Sender: TObject);
var
QQ:Tmenuitem;
begin
QQ:=Tmenuitem.Create(nil);
if OpenDialog1.Execute then
begin
QQ.Caption:=OpenDialog1.FileName;
MainMenu1.Items.Items[0].Insert(3,QQ);
end;
end;
procedure TForm1.N4Click(Sender: TObject);
var
i:integer;
begin
for i:=3 to mainmenu1.Items.Items[0].Count-3 do
begin
mainmenu1.Items.Items[0].Items[i].OnClick:=mainmenu1.Items.Items[0].Items[2].OnClick;
end;
self.Close;
end;
procedure TForm1.MainMenu1Change(Sender: TObject; Source: TMenuItem;
Rebuild: Boolean);
var
i:integer;
begin
for i:=2 to mainmenu1.Items.Items[0].Count-3 do
begin
mainmenu1.Items.Items[0].Items[i].OnClick:=button1.OnClick;
end;
end;
procedure TForm1.exe;
begin
showmessage('选中 ');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
exe;
end;
end.