AGB  ·  Datenschutz  ·  Impressum  







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

Finden einer Node

Ein Thema von CalganX · begonnen am 7. Jan 2004 · letzter Beitrag vom 18. Jan 2004
Antwort Antwort
Seite 1 von 2  1 2      
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Finden einer Node

  Alt 7. Jan 2004, 16:59
Hi,
ich will mit Hilfe einer Funktion die oberste Node einer beliebigen SubNode finden. Was ich meine: ich habe eine Node, die sich einige Ebenen tiefer befinden, als die Hauptnode. Und diese Hauptnode will ich haben.
Also gehe ich immer weiter eine Ebene hoch, bis ich zu der entsprechenden Node kommen, deren Eigenschaft dwMode der Daten auf 1 steht.

So zumindest die Theorie. Die Praxis sieht folgendermaßen aus:
Delphi-Quellcode:
function TfrmMain.GetProjectNode(aNode: PVirtualNode): PVirtualNode;
var
  pNode: PVirtualNode;
  pData: PTVData;
begin
  pNode := aNode;
  Result := nil;
  while (true) do begin
    pData := vstData.GetNodeData(pNode);
    if (pData.dwMode = 1) or (pNode = nil) then Exit;
    pNode := pNode.Parent;
  end;
  Result := pNode;
end;
Doch da Delphi grundsätzlich eine Abneigung gegen mich hat meint er das CPU-Fenster öffnen zu müssen um stillschweigend zu sagen, dass ich böse war.

Was mache ich falsch?

Chris

PS: Das ganze bezieht sich auf VirtualStringTree's.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Finden einer Node

  Alt 7. Jan 2004, 17:13
Vielleicht solltest du noch abfragen, ob pData ungleich nil ist. Es könnte ja sein, dass eine Node keine Daten enthält.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Finden einer Node

  Alt 7. Jan 2004, 17:15
Hi Chewie,
ich denke, dass das nicht der Grund für den Fehler ist, zumal das nichts bringt und zum anderen ich immer die Daten selber schreibe und auch die Daten setze.

Chris
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Finden einer Node

  Alt 7. Jan 2004, 17:18
Geh trotzdem mal im Einzelschrittmodus durch, sowas kann nie schaden. Ist besonders nützlich bei Schleifen mit wenig Durchläufen ohne Rekursion und lange Berechnungen.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Finden einer Node

  Alt 7. Jan 2004, 17:31
Hi,
gute Idee. Warum ich das immer vergessen?!

Jedenfalls hakt es an der markierten Zeile bzw. in der danach.
Code:
function TfrmMain.GetProjectNode(aNode: PVirtualNode): PVirtualNode;
var
  pNode: PVirtualNode;
  pData: PTVData;
begin
  pNode := aNode;
  Result := nil;
  while (true) do begin
    if (pNode = nil) then Exit;
[color=#ff0000]   pData := vstData.GetNodeData(pNode);[/color]
    if (pData = nil) then Exit;
    if (pData.dwMode = 1) then Break;
    pNode := pNode.Parent;
  end;
  Result := pNode;
end;
(Ja... das ist ein anderer Source, aber der oben war falsch)

Chris
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Finden einer Node

  Alt 11. Jan 2004, 11:46
Hi,
hat denn keiner eine Idee, wo der Fehler sein kann?

Gibt es vielleicht eine andere Möglichkeit mein Vorhaben zu realisieren?

Chris
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Finden einer Node

  Alt 11. Jan 2004, 11:57
Hi,

mit einem normalen TreeView habe ich es so gelöst. Bei meinem Test hat es sogar funktioniert

Delphi-Quellcode:
  function GetParentNode(Node: TTreeNode): TTreeNode;
  begin
    if Node.Level <> 0 then
    begin
      Node := Node.Parent;
      Result := GetParent(Node);
    end else Result := Node;
  end;
mfG
mirage228
David F.
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Finden einer Node

  Alt 11. Jan 2004, 12:16
Hi,
danke, aber leider funktioniert das nicht. Das Problem ist, dass ich beim VST nur PVirtualNode verwenden kann und dieser Typ die Eigenschaft "Level" nicht hat und auch nicht vergleichbares.

Chris
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Finden einer Node

  Alt 11. Jan 2004, 13:10
Hi,
es gibt doch eine Möglichkeit, aber leider funktioniert das auch nicht.

Chris
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Finden einer Node

  Alt 11. Jan 2004, 13:31
Hallo,
starte mal die Anlage und klicke auf einen beliebigen Node.
Dann schau Dir mal die function RootNodeText im Source an.
Angehängte Dateien
Dateityp: zip zip_163.zip (198,5 KB, 17x aufgerufen)
  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 03:34 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