Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi VirtualTreeView - Knoten abarbeiten (https://www.delphipraxis.net/98170-virtualtreeview-knoten-abarbeiten.html)

oghma 22. Aug 2007 14:50


VirtualTreeView - Knoten abarbeiten
 
Hallo!

Nachdem ich dank der Hilfe dieses Forums (http://www.delphipraxis.net/viewtopi...=765269#765269) einen Treeview gefüllt habe, würde ich ihn jetzt gern abarbeiten. Sollte ja recht einfach gehen mit getFirst, getFirstChild und getNext.

Jetzt hab ich
Delphi-Quellcode:
var
  node : PVirtualNode;
  Data: PTreeData;
begin
  node := vst.getfirst;
  data := vst.getnodedata(node);
und hier bleibt er schon hängen, weil "OleVariant" und "Pointer" inkompatibel sind.

In meiner AddVSTStructure-Funktion klappt das aber:
Delphi-Quellcode:
function TfUebersicht.AddVSTStructure(AVST: TCustomVirtualStringTree; ANode: PVirtualNode;
  ARecord: TTreeData): PVirtualNode;
var
  Data: PTreeData;
begin
  Result:=AVST.AddChild(ANode);
  Data:=AVST.GetNodeData(Result);
getFirst und AddChild liefern doch beide PVirtualNodes zurück.
Data ist in beiden Funktionen von Typ PTreeData (=^TTreeData).

Warum gehts in dem einen Fall und in dem anderen nicht?

Danke,
Oghma

DeddyH 22. Aug 2007 14:54

Re: VirtualTreeView - Knoten abarbeiten
 
Und wenn Du auf Pointer castest?
Delphi-Quellcode:
var
  node : PVirtualNode;
  Data: PTreeData;
begin
  node := vst.getfirst;
  data := PTreeData(vst.getnodedata(node));

oghma 22. Aug 2007 14:56

Re: VirtualTreeView - Knoten abarbeiten
 
Hallo!

Das hab ich auch schon versucht. Funktioniert leider auch nicht.

Danke trotzdem,
Oghma

christian_u 22. Aug 2007 15:10

Re: VirtualTreeView - Knoten abarbeiten
 
ich seh da nirgends nen OleVariant GetNodeData gibt nen Pointer zurück !
Hast du villeicht irgendwo vst als Olevariant deklariert ?

oghma 22. Aug 2007 19:56

Re: VirtualTreeView - Knoten abarbeiten
 
Hallo!

Nein, VST ist ein TVirtualStringTree. In der anderen Funktion klappt es ja (Nur mit AddChild statt getFirst, aber die sollten ja beide ein PVirtualTree zurück liefern).

Oghma

christian_u 22. Aug 2007 20:27

Re: VirtualTreeView - Knoten abarbeiten
 
Tun sie auch ich nehme trotsdem nie getfirst, weiss ausm hut gar nicht genau was das tut, kannst es ja mal mit RootNode^.FirstChild probieren das sollte auch die erste Node im Baum zurückgeben.

Hawkeye219 22. Aug 2007 20:48

Re: VirtualTreeView - Knoten abarbeiten
 
Hallo oghma,

der Fehler steckt in der zweiten Anweisungszeile, sonst hättest du eine andere Fehlermeldnug erhalten. Die Methode GetNodeData liefert einen typenlosen Pointer, also wird die Variable Data (wahrscheinlich aufgrund einer Namensüberdeckung) den falschen Datentyp besitzen. Wenn du den Mauszeiger über den Bezeichner PTreeData führst, sollte ein Hint-Fenster erscheinen, in dem der Ort der Definition angegeben wird. Vielleicht bringt das weitere Informationen zur Fehlersuche.

Gruß Hawkeye

oghma 22. Aug 2007 20:58

Re: VirtualTreeView - Knoten abarbeiten
 
Zitat:

Zitat von Hawkeye219
also wird die Variable Data (wahrscheinlich aufgrund einer Namensüberdeckung) den falschen Datentyp besitzen.

Und wieder mal liegst du hier richtig! Sollte Delphi in so einem Fall nicht zumindest eine Warnung ausgeben, dass data nicht eindeutig ist?

Danke!

Oghma


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:30 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