首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

菜单和树的动作怎么关联

2012-09-19 
菜单和树的动作如何关联?我想问一下,如何将mainmenu的动作关联到treeview中去,我的treeview内容是循环从ma

菜单和树的动作如何关联?
我想问一下,如何将mainmenu的动作关联到treeview中去,我的treeview内容是循环从mainnenu中取的。

[解决办法]
在树的双击事件中找到对应的菜单项然后调用那个菜单对应的事件不就行了!
[解决办法]
你是直接要代码吗? 其实实现起来是很简单的 

其中MenuItem的Click事件关联到 TreeView的子节点时,采用指针关联即可
pas 文件

Delphi(Pascal) code
unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, ComCtrls, Menus;type  TForm1 = class(TForm)    mm1: TMainMenu;    N1: TMenuItem;    N2: TMenuItem;    N3: TMenuItem;    N4: TMenuItem;    N11: TMenuItem;    N21: TMenuItem;    tv1: TTreeView;    Button1: TButton;    procedure Button1Click(Sender: TObject);    procedure N3Click(Sender: TObject);    procedure N4Click(Sender: TObject);    procedure N11Click(Sender: TObject);    procedure N21Click(Sender: TObject);    procedure tv1Change(Sender: TObject; Node: TTreeNode);  private    { Private declarations }  public    { Public declarations }    procedure SetToTreeView(PMenuItem: TMenuItem;PNoteItem: TTreeNode);  end;var  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);var  i: Integer;  titem, recItem: TTreeNode;begin  tv1.Items.Clear;  SetToTreeView(mm1.Items, tv1.TopItem);end;procedure TForm1.SetToTreeView(PMenuItem: TMenuItem;PNoteItem: TTreeNode);var  i: Integer;  titem, recItem: TTreeNode;begin  for i:=0 to PMenuItem.Count-1 do  begin    titem := tv1.Items.AddChild(PNoteItem, PMenuItem.Items[i].Caption);    titem.Data := Self.MethodAddress(PMenuItem.Items[i].Name +'Click'); //取得MenuItem的Click事件的指针   保存到TTreeNode的Data中    if PMenuItem.Items[i].Count>0 then    begin      SetToTreeView(PMenuItem.Items[i], titem);    end;  end;end;procedure TForm1.tv1Change(Sender: TObject; Node: TTreeNode);var  _Click: procedure(Sender: TObject);begin  if Node.Data<>nil then  begin    @_Click := Node.Data; //将该指针赋值给变量方法    _Click(nil);          //TreeView的OnChange事件中调用即可  end;end;procedure TForm1.N3Click(Sender: TObject);begin  showmessage('新建');end;procedure TForm1.N4Click(Sender: TObject);begin  showmessage('保存');end;procedure TForm1.N11Click(Sender: TObject);begin  showmessage('选项1');end;procedure TForm1.N21Click(Sender: TObject);begin  showmessage('选项2');end;end. 

热点排行