请问各位高手,如何将菜单Tmenu中的内容用Ttreeview的树状结构表示!多谢

解决方案 »

  1.   

    数据库最好了!
    要不你看此帖!
    http://www.delphibbs.com/delphibbs/dispq.asp?lid=959393
    type
      TForm1 = class(TForm)
        MainMenu1: TMainMenu;
       ...
        Button1: TButton;
        TreeView1: TTreeView;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
        procedure AddAMenuItem(AMenuItem:TMenuItem;ANode:TTreeNode);
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}{ TForm1 }procedure TForm1.AddAMenuItem(AMenuItem: TMenuItem;aNode:TTreeNode);
    var
      i,j,k:Integer;
      s:String;
      curNode:TTreeNode;
    begin
      curNode := nil;
      s:=AMenuItem.Caption; //取菜单项的标题!
      k:=Pos('&',s);
      if k > 0 then
        Delete(s,k,1); //删除菜单项标题中的“&”符
      if s <> '-' then //如果是菜单分隔符“-”就不处理!
        curNode := TreeView1.Items.AddChild(aNode,s);
      J:=AMenuItem.Count;
      if J > 0 then //有子菜单,就遍历
      for i := 0 to j - 1 do
      begin
        AddAMenuItem(AMenuItem.Items[i],curNode);
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      a:Integer;
      aNode:TTreeNode;
    begin
      aNode := TreeView1.Items.GetFirstNode; //取Treeview的根
      for a := 0 to MainMenu1.Items.Count - 1 do
      begin
        AddAMenuItem(MainMenu1.Items[a],aNode);
      end;
    end;end.