接分

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls, Menus;type
      TForm1 = class(TForm)
        MainMenu1: TMainMenu;
        aaa1: TMenuItem;
        bbb1: TMenuItem;
        ccc1: TMenuItem;
        ddd1: TMenuItem;
        eee1: TMenuItem;
        qqq1: TMenuItem;
        hhh1: TMenuItem;
        tv_1: TTreeView;
        Button1: TButton;
        Edit1: TEdit;
        procedure Button1Click(Sender: TObject);
        procedure ddd1Click(Sender: TObject);
        procedure bbb1Click(Sender: TObject);
        procedure tv_1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    function getmidstr(str,s1,s2:string):string;   //从取两个符号中间字符串
    begin
      if s1='' then
        s1:='[';
      if s2='' then
        s2:=']';
      result:=copy(str,pos(s1,str)+1,(pos(s2,str)-(pos(s1,str)+1)));
    end;procedure TForm1.Button1Click(Sender: TObject);
      procedure getsub(submenu:Tmenuitem;pid:string;subtree:Ttreenode);
      var
        j:integer;
        itemcount:integer;
        childtree:Ttreenode;
      begin
          itemcount:=submenu.Count;
          for j:=0 to itemcount-1 do
          begin
            if (submenu.Items[j].Caption<>'-') and (submenu.Items[j].Enabled) then
               childtree:=tv_1.Items.AddChild(subtree,submenu.items[j].Caption+'['+submenu.Items[j].Name+']');
            if submenu.Items[j].Caption=null then
               begin
                exit;
               end
              else
               begin
                getsub(submenu.Items[j],pid+submenu.Items[j].Name+'.',childtree);
               end;
          end;
      end;
    var
       tree:ttreenode;
    begin
        tree:=tv_1.Items.AddFirst(nil,'系统菜单[top]');
        getsub(form1.MainMenu1.Items,'',tree);
    end;procedure TForm1.ddd1Click(Sender: TObject);
    begin
      edit1.Text:='ddd单击';
    end;procedure TForm1.bbb1Click(Sender: TObject);
    begin
      edit1.Text:='bbb单击,哈哈';end;procedure TForm1.tv_1Click(Sender: TObject);
    var
      menuname:string;
      menu :tmenuitem;
    begin
      if tv_1.Selected=nil then exit;
      menuname:=getmidstr(tv_1.Selected.Text,'[',']');
      menu:=tmenuitem(form1.FindComponent(menuname));
      if menu<>nil then
        if Assigned(menu.onClick) then
           menu.Click;
    end;end.
      

  2.   

    楼主还是把原帖地址帖出来吧,否则ari会认为这是倒分的,哈哈哈。:P
      

  3.   

    下面是原贴地址:
    http://community.csdn.net/Expert/topic/4364/4364561.xml?temp=.5557978