动态添加内容的POPUMENU怎么响应事件
动态添加内容的POPUMENU如何响应事件
一个POPUMENU菜单,其中ITEM的内容是动态附与的,不是事先设置好的,请问这样要响应相关双击事件,并再取点击打ITEM的内容是怎样的处理的。
------解决方案--------------------
动态添加的MenuItem可以给事件赋值啊
比如Item.OnClick = XXX;
------解决方案--------------------
一个例子:
一个POPUMENU菜单,其中ITEM的内容是动态附与的,不是事先设置好的,请问这样要响应相关双击事件,并再取点击打ITEM的内容是怎样的处理的。
------解决方案--------------------
动态添加的MenuItem可以给事件赋值啊
比如Item.OnClick = XXX;
------解决方案--------------------
一个例子:
- Delphi(Pascal) code
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus; type TForm1 = class(TForm) PopupMenu1: TPopupMenu; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private procedure PopupMenuItemClick(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} var iTag : Integer; procedure TForm1.FormCreate(Sender: TObject); begin PopupMenu := PopupMenu1; iTag := 1; end; procedure TForm1.PopupMenuItemClick(Sender: TObject); begin ShowMessage(Format('Tag: %d, Caption: %s', [TMenuItem(Sender).Tag, TMenuItem(Sender).Caption])); end; procedure TForm1.Button1Click(Sender: TObject); var AItem : TMenuItem; begin //创建动态PopupMenu的Item AItem := TMenuItem.Create(PopupMenu1); AItem.Caption := '动态PopupMenu ' + IntToStr(iTag); AItem.Tag := iTag; AItem.OnClick := PopupMenuItemClick; PopupMenu1.Items.Add(AItem); inc(iTag); end; end.
------解决方案--------------------
- Delphi(Pascal) code
procedure TForm1.HandleItemClick(Sender: tobject); begin showmessage('点击了菜单项'); end; procedure TForm1.CreateMenu; begin //....创建菜单项代码 MenuItem.OnClick := HandleItemClick; end;
------解决方案--------------------
- Delphi(Pascal) code
procedure TForm1.myclick(Sender: TObject); var i:integer; begin 根据 TmenuItem(Sender).Tag TmenuItem(Sender).Caption 等进行判断 end;