搞定,不需要递归!把treeview1的节点加到MainMenu1的file菜单下:
procedure TForm1.Button1Click(Sender: TObject);
var
NewItem,PItem: TMenuItem;
I ,j,k,h: integer;
str:string;
begin
NewItem := TMenuItem.Create(Self);
NewItem.Caption :=treeview1.items[0].Text;
MainMenu1.Items[0].Add(Newitem);
for i:=1 to treeview1.items.Count-1 do
begin
NewItem := TMenuItem.Create(Self);
NewItem.Caption :=treeview1.items[i].Text;
if treeview1.Items[i].Parent=nil then
MainMenu1.Items[0].Add(Newitem)
else
begin
with MainMenu1 do
for j:=0 to Items[0].Count-1 do
begin
str:=Items[0].items[j].Caption;
if pos('&',Items[0].items[j].Caption)>0 then
begin
str:=stringreplace(str,'&','',[rfReplaceAll,rfIgnoreCase]);
k:=pos('(',str)-1;
if k>0 then
str:=copy(str,1,k);
end;
if str=treeview1.items[i].Parent.Text then
begin
Items[0].items[j].Add(Newitem);
break;
end;
end;
end;
end;
end;
请给分!谢谢!
procedure TForm1.Button1Click(Sender: TObject);
var
CurNode: TTreeNode;
MainMenus: Array of TMenuItem;
I: Integer;
begin
I := 1;
CurNode:=TreeView1.Items[0];
Repeat
SetLength(MainMenus, I);
MainMenus[I] := TMenuItem.Create(Self);
MainMenus[I].Caption := CurNode.Text;
MainMenu1.Items.Add(MainMenus[I]);
if CurNode.HasChildren then
SearchTreeView(CurNode, MainMenus[I]);
Inc(I);
CurNode := CurNode.getNextSibling;
Until CurNode=nil;
end;
procedure TForm1.SearchTreeView(FirstNode:TTreeNode; AMenu: TMenuItem);
var
i,j:integer;
TempMenu: TMenuItem;
begin
if FirstNode.Count<>0 then
for i:=0 to FirstNode.Count -1 do
begin
TempMenu := TMenuItem.Create(Self);
TempMenu.Caption := FirstNode.Item[i].Text;
AMenu.Add(TempMenu);
if FirstNode.HasChildren then
SearchTreeView(FirstNode.Item[i], TempMenu);
end;
end;