![]() |
TTreeView - Wie geht?
Hallo,
ich hab da wohl eine kleine Leseschwäche in der OH oder ein anderes mentales Problem: Ich kann partout nicht mit einem TreeView umgehen. Spass beiseite. Ich hab folgendes Problem: Wenn ich auf eine Node klicke, passiert was. Das ist auch richtig und in meinem Interesse. Meine einzige Frage ist, wie ich im OnClick die geklickte Node rausbekomme. Ich bin zu blöd oder denk zu kompliziert! Bitte helft mir. Dank im Vorraus Alf |
Re: TTreeView - Wie geht?
Gibt es da nicht eine Eigenschaft Selected?! Oder war das bei der TListView? :gruebel:
|
Re: TTreeView - Wie geht?
jab.. selected gibs da.
|
Re: TTreeView - Wie geht?
Ich denke der angeklickte Node ist der Sender vom Event, (oder kommt in den EventArgs mit) oder lieg ich da jetzt falsch?
|
Re: TTreeView - Wie geht?
Über die Mauskoordinaten könnte man es so lösen:
Delphi-Quellcode:
Das geht dann beispielsweise im OnMouseDown oder OnKouseUp sehr leicht, da dir hier x und y direkt zu Verfügung stehen. Oder liege ich da nun falsch? :mrgreen:
Node := GetNodeAt(x, y);
|
Re: TTreeView - Wie geht?
Hallo Alf,
vielleicht hilft dir dies: Im OnChange Ereignis kannst Du den absoluten Index des angklickten Node ermitteln mit z.Bsp.:
Delphi-Quellcode:
Gruß René
Showmessage(IntToStr(Node.AbsoluteIndex));
|
Re: TTreeView - Wie geht?
@Phoenix
Ja, leider... ich hatte das auch gehofft.
Delphi-Quellcode:
Bringt einfach nur TTreeView. Das sehe ich auch ein, weil ich ja auf die Komponente raufhaue.
procedure TBackofficeFor.AppTrVClick(Sender: TObject);
begin ShowMessage(Sender.ClassName); end; @drschubi OnChange ist schon geil, da kann ich die Node abgreifen, zu der gewechselt wird. Selected ist auch so ein Thema. Da ich ein sehr fauler Mensch bin, habe ich über Stunden die Möglichkeit gesucht, OnChange, Selected usw aussen vor zu lassen, bzw. nicht abzuarbeiten. Ich will auf so eine Node einfach draufhauen, die Node geliefert bekommen, auswerten und gut. Ich dacht OnClick wäre geil, weil Mouse, Tastatur oÄ mir ein solches Ereignis liefern könnten. D.h. ich will eigentlich nur ein Ereignis oder besser noch, eine von mir definierte Action abarbeiten müssen und komme damit nicht weiter. Irgendwelche Ideen, die genial einfach sind? Alf |
Re: TTreeView - Wie geht?
Hrm...
haben die Nodes ein eigens OnClick - Event? ;-) Ich bin zur Zeit leider zu sehr mit .NET am arbeiten so dass ich die VCL-Treeview nicht mehr im Kopf hab. Bei meiner .NET - Treeview geht das nämlich alles :) |
Re: TTreeView - Wie geht?
@Phoenix
Gutes Argument. So weit bin ich auch schon fast. Ich mach das momentan noch mit D7. Ich hab einfach die IDE so lieb gewonnen, daß ich mich mit allen Mitteln (nach ausführlichen Tests) gegen BDS gewehrt habe. Einige Kollegen haben auch schon gemeint, .Net wäre zeitgemässer, ich bin da wohl ein wenig altmodisch. Mist, ich komme mit der alten IDE einfach besser klar. Aber was hilfts, bye bye... |
Re: TTreeView - Wie geht?
Hallo,
Zitat:
egal ob Du drauf klickst oder daneben. OnChange wird nur ausgelöst wenn die Selectierung von einen Node auf einenen anderen wechselt, klickst du einen markierten Node an, wird das Ereignis nicht ausgelöst. Matze hat Dir schon den richtigen Tipp mit GetNodeAt(x, y); gegeben, wenn Du das noch mit GetHitTestInfoAt(x,y) verbindest, dann hast Du genau den Knoten der angeklickt wird. Über den Rückgabewert vom Typ THitTest der Funktion GetHitTestInfoAt kannst Du sehr genau feststellen worauf im Bereich des TreeView geklickt wurde.
Delphi-Quellcode:
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var aNode : TTreeNode; begin //htOnLabel x,y liegt im Bereich der Node-Beschriftung if (htOnLabel in TreeView1.GetHitTestInfoAt(x,y)) then begin aNode := TreeView1.GetNodeAt(x,y); showmessage('KnotenText: '+TreeView1.Selected.Text+#13#10 +'AbsoluteIndex: '+IntToStr(TreeView1.Selected.AbsoluteIndex)); end else showmessage('Nicht auf die Beschriftung eines Node geklickt'); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:50 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