31-08-2023, Saat: 21:04
(31-08-2023, Saat: 16:24)shooterman Adlı Kullanıcıdan Alıntı: Arkadaşlar selamlar,
Tablodan aldığım verilerle, Treeview menüyü oluşturuyorum.
Daha sonra, bir arkadaşımın yazmış olduğu koda istinaden, bu yapıyı popup menüye aktarıyorum. Buraya kadar problem yok. Ancak aşağıdaki resimden gördüğünüz üzere, treeview menü yapısının aynısını popup menüye aktarıyor. Aslında istediğim, sadece nodelar ve noda tıklayınca sağ tarafa menü açılsın. Ancak bu yapıda, hem node ları hem childları da popupa aktarıyor. Bu sefer popup menüde aynı bilgiler altalta node olarak ta görünüyor.
Sadece node lar ve node lara tıklayınca sağ tarafa subchildları nasıl gösterebilirim?
Kod bloğum aşağıdadır. Yardımlarınızı rica ederim.
Treeview oluşturma kodum:
procedure TForm1.BtntreeolusturClick(Sender: TObject); var MyTreeNode1, MyTreeNode2: TTreeNode; begin with TreeView1.Items do begin Clear; MyTreeNode1 := Add(nil, 'RootTreeNode1'); AddChild(MyTreeNode1,'ChildNode1'); MyTreeNode2 := Add(MyTreeNode1, 'RootTreeNode2'); AddChild(MyTreeNode2,'ChildNode2'); MyTreeNode2 := TreeView1.Items[3]; AddChild(MyTreeNode2,'ChildNode2a'); AddChild(MyTreeNode2,'ChildNode2b'); Add(MyTreeNode1, 'RootTreeNode3'); end; end;
popupmenu olusturma kodum:
procedure TForm1.PopulatePopupMenu2(Menu: TMenuItem; ParentNode: TTreeNode); var Node: TTreeNode; SubMenuItem: TMenuItem; begin Menu.Clear; for Node in treeview1.Items do begin if (ParentNode = nil) or (Node.Parent = ParentNode) then begin SubMenuItem := TMenuItem.Create(Self); SubMenuItem.Caption := Node.Text; ; Menu.Add(SubMenuItem); PopulatePopupMenu2(SubMenuItem, node); end;
procedure TForm1.PopupMenu1Popup(Sender: TObject); begin PopulatePopupMenu2(popupmenu1.Items, nil); end;
TTreeNode Level özelliğini göz ardı etmemelisin (bkz: https://docwiki.embarcadero.com/Librarie...Node.Level).
.

