![]() |
TreeView Items in Popupmenu übertragen
Hallo
Habe eine TreeView1 und ein Popupmenu1. Wie übertrage ich nun die TreeView items ins Popupmenu. Habe mal soviel zustande gebracht.
Delphi-Quellcode:
Kann mir jemand helfen, eine kleine Rekursive Funktion zu schreiben, um eine
var Item:TMenuItem;
begin Item:= TMenuItem.Create; Item.Caption:= TreeView1.Items[0].Text; Item.OnClick:= MyEventHandler; // onclick zuweisen PopupMenu.Items.Add(Item); end; beliebige TreeView Sturktur (Ordner + Unterordner) in ein Popupmenu zu populieren? |
Re: TreeView Items in Popupmenu übertragen
Hi API,
dein Code war doch schon fast fertig - warum hast du aufgehört?
Delphi-Quellcode:
Freundliche Grüße vom marabu
function TDemoForm.NodePath(node: TTreeNode): string;
begin Result := node.Text; if Assigned(node.Parent) then Result := NodePath(node.Parent) + ' \ ' + Result; end; procedure TDemoForm.ProcessItems(item: TMenuItem; node: TTreeNode); var i: integer; subItem: TMenuItem; subNode: TTreeNode; begin for i := 0 to node.Count - 1 do begin subNode := node.Item[i]; subItem := NewItem(subNode.Text, TextToShortCut(''), false, true, nil, 0, ''); subItem.Tag := Integer(subNode); if not subNode.HasChildren then subItem.OnClick := MenuItemClick; item.Add(subItem); ProcessItems(subItem, subNode); end; end; procedure TDemoForm.PopulateMenuFromTreeNodes(menu: TMenu; nodes: TTreeNodes); var item: TMenuItem; node: TTreeNode; begin menu.Items.Clear; node := nodes.GetFirstNode; while Assigned(node) do begin item := NewItem(node.Text, TextToShortCut(''), false, true, nil, 0, ''); item.Tag := Integer(node); menu.Items.Add(item); if node.HasChildren then ProcessItems(item, node) else item.OnClick := MenuItemClick; node := node.getNextSibling; end; end; procedure TDemoForm.MenuButtonClick(Sender: TObject); begin PopulateMenuFromTreeNodes(PopupMenu, MenuTree.Items); end; procedure TDemoForm.MenuItemClick(Sender: TObject); begin with Sender as TMenuItem do ShowMessage(Format('%s', [NodePath(TTreeNode(Tag))])); end; |
Re: TreeView Items in Popupmenu übertragen
Zitat:
|
Re: TreeView Items in Popupmenu übertragen
oder so:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin AddMenu(nil, nil); end; procedure TForm1.AddMenu(Node: TTreeNode; Menu: TMenuItem); var Temp: TTreeNode; Item: TMenuItem; begin if not Assigned(Node) then begin Temp := TreeView1.Items[0]; while Assigned(Temp) do begin Item := TMenuItem.Create(Self); Item.Caption := Temp.Text; PopupMenu1.Items.Add(Item); if Temp.Count > 0 then AddMenu(Temp, Item); Temp := Temp.GetNextSibling; end; end else begin Temp := Node.GetFirstChild; while Assigned(Temp) do begin Item := TMenuItem.Create(Self); Item.Caption := Temp.Text; Menu.Add(Item); if Temp.Count > 0 then AddMenu(Temp, Item); Temp := Temp.GetNextSibling; end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz