读书人

动态添加内容的POPUMENU怎么响应事件

发布时间: 2012-05-10 16:02:39 作者: rapoo

动态添加内容的POPUMENU如何响应事件
一个POPUMENU菜单,其中ITEM的内容是动态附与的,不是事先设置好的,请问这样要响应相关双击事件,并再取点击打ITEM的内容是怎样的处理的。

[解决办法]
动态添加的MenuItem可以给事件赋值啊
比如Item.OnClick = XXX;
[解决办法]
一个例子:

Delphi(Pascal) code
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.
[解决办法]
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; 

读书人网 >.NET

热点推荐