AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Oberste Node in TreeView finden

Ein Thema von Yheeky · begonnen am 15. Sep 2008 · letzter Beitrag vom 16. Sep 2008
Antwort Antwort
Seite 1 von 2  1 2      
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#1

Oberste Node in TreeView finden

  Alt 15. Sep 2008, 09:56
Hi,

ich habe mir eine Funktion "GetParentNode" geschrieben, die aus einer Baumstruktur den obersten Parent ermitteln soll. Ich habe zwei Lösungen versucht, aber beide liefern nicht das gewünschte Ergebnis. Ich kann den Fehler leider nicht finden.

Hier meine beiden Varianten:

Delphi-Quellcode:
function GetNodeParent(Node: TTreeNode): TTreeNode;
var
  tempNode: TTreeNode;
begin
  // Übergebene Node als TempNode festlegen
  tempNode := Node;

  if tempNode.Parent <> nil then
    GetNodeParent(tempNode.Parent);

  result := tempNode;
end;
Delphi-Quellcode:
function GetNodeParent(Node: TTreeNode): TTreeNode;
var
  tempNode: TTreeNode;
begin
  // Übergebene Node als TempNode festlegen
  tempNode := Node;

  while tempNode.Parent <> nil do
    tempNode := tempNode.Parent;

  result := tempNode;
end;
Kann mir jemand helfen?
  Mit Zitat antworten Zitat
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#2

Re: Oberste Node in TreeView finden

  Alt 15. Sep 2008, 10:01
Was liefern denn beide Funktionen für ein Ergebnis?
Jonas
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#3

Re: Oberste Node in TreeView finden

  Alt 15. Sep 2008, 10:04
Habe folgende TreeView:

- Fahrzeuge
--- Autos
--- Motorräder
--- Fahrräder
- Personal
--- Azubis
...

Wenn ich mich z.B. in "Fahrräder" befinde, bekomme ich "Fahrräder" zurückgeliefert. Kann den Fehler leider nicht finden. Müsste doch eigentlich korrekt sein, oder?
  Mit Zitat antworten Zitat
Benutzerbild von calculon
calculon

Registriert seit: 16. Sep 2006
256 Beiträge
 
Delphi 7 Personal
 
#4

Re: Oberste Node in TreeView finden

  Alt 15. Sep 2008, 10:06
Beide ungetesetet, aber so würd' ich mal ansetzen...

Delphi-Quellcode:
function GetNodeParent(Node: TTreeNode): TTreeNode;
begin
  result := Node.TopItem;
end;
Delphi-Quellcode:
function GetTreeViewRoot(tv: TTreeView): TTreeNode;
begin
  result := nil;
  if tv.Items.Count > 0 then
    result := tv.Items.Item[0];
end;

Gruß
--
  Mit Zitat antworten Zitat
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#5

Re: Oberste Node in TreeView finden

  Alt 15. Sep 2008, 10:08
Kannst du vielleicht mal im Debugger durchgehen ob die Funktion an sich funktioniert?

@ calculon: So gehts natürlich auch
Jonas
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#6

Re: Oberste Node in TreeView finden

  Alt 15. Sep 2008, 10:09
Mhmm, hab´s Problem gefunden. Es hat sich komischerweise eine Funktion eingeschlichen, die die ParentNode in die selektierte Node umbenannt hat *gg*...dann geht´s natürlich nicht.

Danke trotzdem!

PS: TopItem ist natürlich praktischer
  Mit Zitat antworten Zitat
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#7

Re: Oberste Node in TreeView finden

  Alt 15. Sep 2008, 10:11


Sowas ähnliches ist mir auch mal passiert, ich hab mich dumm und dämlich gesucht
Jonas
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#8

Re: Oberste Node in TreeView finden

  Alt 15. Sep 2008, 10:18
Tja, man lernt nie aus
Ohne das hier zu posten hätte ich vermutlich noch Stunden gesucht, aber es ist ja immer so, dass, wenn man hier postet, man die Antwort doch oft schnell selbst findet
  Mit Zitat antworten Zitat
Benedikt
(Gast)

n/a Beiträge
 
#9

Re: Oberste Node in TreeView finden

  Alt 15. Sep 2008, 11:01
Zitat von calculon:
Beide ungetesetet, aber so würd' ich mal ansetzen...
Delphi-Quellcode:
function GetNodeParent(Node: TTreeNode): TTreeNode;
begin
  result := Node.TopItem;
end;
Ich weiß, ungetestet, aber ich werfs nochmal ein, nicht dass das mal zur Verwirrung führt - TopItem ist eine Eigenschaft direkt vom TreeView und gibt das oberste angezeigte Element zurück - an der Stelle würde Node.Parent also wesentlich mehr Sinn machen
Für den Root bietet sich übrigens noch TreeView1.Items.GetFirstNode an.

MfG Benedikt
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Oberste Node in TreeView finden

  Alt 15. Sep 2008, 12:21
Delphi-Quellcode:
Function GetTopItem(ANode : TTreeNode) : TTreeNode;
Begin
  While ANode.Parent<>Nil do ANode := ANode.Parent;
  Result := ANode.Parent;
End;
Nur der Vollständigkeit halber.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 14:49 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