//将菜单写进树,你在以下代码的基础上稍改就可以了啊 procedure Tmainform.N16Click(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,'系统菜单'); getsub(mainmenu1.Items,'',tree); end; //通过点击该树时即触发(菜单click)事件,有点麻烦,不过完全可以做的,只是分有点少了,哈哈
设置菜单Tag(例如:10000000四级菜单)值来确定其节点。
10 00 00 00
procedure Tmainform.N16Click(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,'系统菜单');
getsub(mainmenu1.Items,'',tree);
end;
//通过点击该树时即触发(菜单click)事件,有点麻烦,不过完全可以做的,只是分有点少了,哈哈
不知道我说明白没有?