当前位置:主页>仓库管理软件> 列表

求助:动态菜单 找金蝶财务软件

库存管理软件版1楼: 在delphi中如何动态制作菜单啊

2楼: var
aa:Tmenuitem;
begin
aa:=tmenuitem.Create(nil);
aa.Caption:=''aa'';
self.MainMenu1.Items.Add(aa);
end; 如金蝶财务软件

3楼: 但是菜单的单击事件该怎么编写啊

4楼: 这个问题很难吗,各位高手帮帮忙,小弟急用啊

5楼: aa.onclick := 自定义事件
就可以了!
你要声明一个自定义事件!

6楼: 但编译的时候会出错啊
[Error] Unit1.pas(42): Incompatible types: ''TNotifyEvent'' and ''procedure, untyped pointer or untyped parameter''
[Fatal Error] Project1.dpr(5): Could not compile used unit ''Unit1.pas''

库存管理软件版7楼: type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
MainMenu: TMainMenu;
Item1: TMenuitem;
SubItem1: TMenuitem;
procedure SubItem1Click(Sender: TObject);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
MainMenu:=TMainMenu.Create(self);
Item1:=TMenuitem.Create(self);
SubItem1:=TMenuitem.Create(self);
MainMenu.AutoHotkeys:=maManual;
Item1.Caption:=''文件[&F]'';
SubItem1.Caption:=''打开[&O]'';
SubItem1.OnClick:=SubItem1Click;
MainMenu.Items.Add(Item1);
Item1.Insert(0,SubItem1);
end;

procedure TForm1.SubItem1Click(Sender: TObject);
begin
ShowMessage(''单击了''''打开''''菜单项'');
end;

8楼: 你的自定义事件怎么写的,贴上来给你挑错

9楼: procedure TForm1.MenuOnClick(Sender: TObject);//这事件实现动态菜单的点击事件,并利用tag把参数传递给form6的kword
var p: PChar;
begin

if Sender is TMenuItem then
begin
p := Ptr((Sender as TMenuItem).Tag);
form6 := TForm6.Create(application);
Form6.Kword:=p;
Form6.ShowModal;
end;

end;

procedure TForm1.N5Click(Sender: TObject);
var i: Integer;
tmp: string;
new: tmenuitem;
begin

new := tmenuitem.create(self);
new.Caption := ''菜单标题'';
new.onClick := MenuOnClick;
n5.Add(new);
mm1.Items[0].Items[1].Tag := Integer(@new.caption[1]);//这里是通过tag来实现菜单传递参数

end;

10楼: 能用了,谢谢各位了。