button动态添加菜单
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,stdctrls,extctrls,menus;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
//定义菜单命令的事件处理过程
procedure mypopuphandler(sender:tobject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject); private
{ Private declarations }
public
{ Public declarations } end;var
Form1: TForm1;
mymainmenu:tmainmenu;
mysubitems:array[0..3] of tmenuitem;
mypopupmenu:tpopupmenu;
mypopupitems:array[0..3] of tmenuitem;
i:integer;implementation{$R *.dfm}
//菜单命令处理过程
procedure tform1.mypopuphandler(sender:tobject);
begin
with sender as tmenuitem do
begin
showmessage(caption);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
myitem:array[0..2] of tmenuitem;
begin
mymainmenu:=tmainmenu.create(self);
//creat three menuitem
for i:=0 to 2 do begin
myitem[i]:=tmenuitem.create(self);
myitem[i].caption:='子菜单'+inttostr(i)+'(&'+inttostr(i)+')';
mymainmenu.items.add(myitem[i]);
end;
//creat four subitems
for i:=0 to 3 do begin
mysubitems[i]:=tmenuitem.create(self);
mysubitems[i].Caption:='主菜单项'+inttostr(i)+'(&'+inttostr(i+1)+')'
mymainmenu.Items[0].Add(mysubitems[i]);
mysubitems[i].OnClick:=mypopuphandler;
end;
//set separator
mysubitems[1].caption:='-'
mysubitems[3].break:=mbbarbreak;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
mypopupmenu:=tpopupmenu.create(self);
for i:=0 to 3 do begin
mypopupitems[i]:=tmenuitem.create(self);
mypopupitems[i].Caption:=''+inttostr(i)+'(&'+inttostr(i+1)+')';
mypopupitems[i].onclick:=mypopuphandler;
end;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
mypopupmenu.Popup(form1.Left+60,form1.Top+60);
end;end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,stdctrls,extctrls,menus;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
//定义菜单命令的事件处理过程
procedure mypopuphandler(sender:tobject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject); private
{ Private declarations }
public
{ Public declarations } end;var
Form1: TForm1;
mymainmenu:tmainmenu;
mysubitems:array[0..3] of tmenuitem;
mypopupmenu:tpopupmenu;
mypopupitems:array[0..3] of tmenuitem;
i:integer;implementation{$R *.dfm}
//菜单命令处理过程
procedure tform1.mypopuphandler(sender:tobject);
begin
with sender as tmenuitem do
begin
showmessage(caption);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
myitem:array[0..2] of tmenuitem;
begin
mymainmenu:=tmainmenu.create(self);
//creat three menuitem
for i:=0 to 2 do begin
myitem[i]:=tmenuitem.create(self);
myitem[i].caption:='子菜单'+inttostr(i)+'(&'+inttostr(i)+')';
mymainmenu.items.add(myitem[i]);
end;
//creat four subitems
for i:=0 to 3 do begin
mysubitems[i]:=tmenuitem.create(self);
mysubitems[i].Caption:='主菜单项'+inttostr(i)+'(&'+inttostr(i+1)+')'
mymainmenu.Items[0].Add(mysubitems[i]);
mysubitems[i].OnClick:=mypopuphandler;
end;
//set separator
mysubitems[1].caption:='-'
mysubitems[3].break:=mbbarbreak;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
mypopupmenu:=tpopupmenu.create(self);
for i:=0 to 3 do begin
mypopupitems[i]:=tmenuitem.create(self);
mypopupitems[i].Caption:=''+inttostr(i)+'(&'+inttostr(i+1)+')';
mypopupitems[i].onclick:=mypopuphandler;
end;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
mypopupmenu.Popup(form1.Left+60,form1.Top+60);
end;end.
解决方案 »
- 线程同步问题,一个函数,里面都是局部变量。好几个线程用这个函数,有没有必要用临界区?
- (100分,急!)用TCommPortDriver通讯控件在98下做的通讯程序,现在在xp下不能通讯,怎么办???
- 关于ADO批量删除数据的问题
- 有人知道这是什么编码,怎样用DELHPI转换
- 控件问题
- 传奇所有版本封包加解密库免费下载!
- 串口问题 急,急,急,急...
- 绝对初学问题,速答速给分 :)
- 如何才能得到某个数据库(.mdb)中所包含的表名(关于ADO的)
- ?大富翁自救运动!进来看看吧?
- 怎样实现类似ie的地址栏的自动完成和自动加.com,.net功能?----内详!
- 如何在自己浏览器里面实现IE的Plugin的所有功能,比如金山词霸的"即点即译"
//creat four subitems
for i:=0 to 3 do begin
mysubitems[i]:=tmenuitem.create(self);
mysubitems[i].Caption:='主菜单项'+inttostr(i)+'(&'+inttostr(i+1)+')'
mymainmenu.Items[0].Add(mysubitems[i]);
mysubitems[i].OnClick:=mypopuphandler;
end;中
mymainmenu.Items[0].Add(mysubitems[i]);
应该是mymainmenu.Items.Add(mysubitems[i]);—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————