动态添加内容的POPUMENU如何响应事件
一个POPUMENU菜单,其中ITEM的内容是动态附与的,不是事先设置好的,请问这样要响应相关双击事件,并再取点击打ITEM的内容是怎样的处理的。
[解决办法]
动态添加的MenuItem可以给事件赋值啊
比如Item.OnClick = XXX;
[解决办法]
一个例子:
unit Unit1;interfaceuses 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.
[解决办法]
procedure TForm1.HandleItemClick(Sender: tobject);begin showmessage('点击了菜单项');end;procedure TForm1.CreateMenu;begin //....创建菜单项代码 MenuItem.OnClick := HandleItemClick;end;
[解决办法]
procedure TForm1.myclick(Sender: TObject); var i:integer; begin 根据 TmenuItem(Sender).Tag TmenuItem(Sender).Caption等进行判断end;