AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TTreeView - Wie geht?

Ein Thema von Alfalge · begonnen am 22. Sep 2006 · letzter Beitrag vom 23. Sep 2006
Antwort Antwort
Seite 1 von 2  1 2   
Alfalge

Registriert seit: 8. Sep 2006
Ort: Bielefeld
6 Beiträge
 
#1

TTreeView - Wie geht?

  Alt 22. Sep 2006, 13:02
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
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

Re: TTreeView - Wie geht?

  Alt 22. Sep 2006, 13:03
Gibt es da nicht eine Eigenschaft Selected?! Oder war das bei der TListView?
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
RobertDorn

Registriert seit: 9. Sep 2006
Ort: Leipzig
35 Beiträge
 
Delphi XE4 Professional
 
#3

Re: TTreeView - Wie geht?

  Alt 22. Sep 2006, 13:18
jab.. selected gibs da.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#4

Re: TTreeView - Wie geht?

  Alt 22. Sep 2006, 13:23
Ich denke der angeklickte Node ist der Sender vom Event, (oder kommt in den EventArgs mit) oder lieg ich da jetzt falsch?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: TTreeView - Wie geht?

  Alt 22. Sep 2006, 13:49
Über die Mauskoordinaten könnte man es so lösen:

Node := GetNodeAt(x, y); 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?
  Mit Zitat antworten Zitat
drschubi

Registriert seit: 18. Dez 2003
94 Beiträge
 
#6

Re: TTreeView - Wie geht?

  Alt 22. Sep 2006, 14:34
Hallo Alf,

vielleicht hilft dir dies:

Im OnChange Ereignis kannst Du den absoluten Index des angklickten Node ermitteln mit z.Bsp.:

Showmessage(IntToStr(Node.AbsoluteIndex)); Gruß René
  Mit Zitat antworten Zitat
Alfalge

Registriert seit: 8. Sep 2006
Ort: Bielefeld
6 Beiträge
 
#7

Re: TTreeView - Wie geht?

  Alt 22. Sep 2006, 14:53
@Phoenix
Ja, leider... ich hatte das auch gehofft.

Delphi-Quellcode:
procedure TBackofficeFor.AppTrVClick(Sender: TObject);
begin
  ShowMessage(Sender.ClassName);
end;
Bringt einfach nur TTreeView. Das sehe ich auch ein, weil ich ja auf die Komponente raufhaue.

@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
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#8

Re: TTreeView - Wie geht?

  Alt 22. Sep 2006, 15:13
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
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Alfalge

Registriert seit: 8. Sep 2006
Ort: Bielefeld
6 Beiträge
 
#9

Re: TTreeView - Wie geht?

  Alt 22. Sep 2006, 17:50
@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...
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#10

Re: TTreeView - Wie geht?

  Alt 22. Sep 2006, 21:10
Hallo,
Zitat von Alfalge:
...Meine einzige Frage
ist, wie ich im OnClick die geklickte Node rausbekomme...
OnClick in Verbindung mit Selected liefert dir den selectierten Node,
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;
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz