Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - VirtualStringTree - Text auslesen ??


OliverN_26 - So 16.01.11 10:37
Titel: VirtualStringTree - Text auslesen ??
Hi

Ich weiss nicht ob es ein Fehler war mich an der VirtualStringTree komponente zu versuchen aber ich bin am verzweifeln.
Ich bin so weit dass ich Einträge und Untereinträge schreiben kann.
Nur wie gott verdammt ist es denn möglich denen nen einfach Namen zuzuweisen?
Und wie komme ich, wenn ich diesen Node anklicke, an den Text?
Ist das wirklich so dermassen kompliziert oder sollte ich mich noch mal hinlegen?

danke :(


jaenicke - So 16.01.11 11:25

user profile iconOliverN_26 hat folgendes geschrieben Zum zitierten Posting springen:
Nur wie gott verdammt ist es denn möglich denen nen einfach Namen zuzuweisen?
Indem du im Ereignis OnGetText den Text-Parameter entsprechend setzt.

user profile iconOliverN_26 hat folgendes geschrieben Zum zitierten Posting springen:
Und wie komme ich, wenn ich diesen Node anklicke, an den Text?
Indem du auf deine Daten, die du zu dem Knoten hinterlegt hast, zugreifst. Dafür gibt es die Funktion GetNodeData.

// EDIT:
Das entsprechende Tutorial ist ja eines der ersten Google Ergebnisse, das kennst du also ja sicher schon. Ich verlinke es aber mal noch einmal:
http://www.delphi-treff.de/tutorials/komponenten/virtualtreeview/den-nodes-daten-hinzufuegen/


OliverN_26 - So 16.01.11 11:46

Hmm .. so nach und nach blice ich durch aber ich muss trotzdem sagen dass ich diese extrem komplex und kompliziert finde.
Für Anfänger nich gerade geeignet :-(
Also die Beschriftung habe ich hinbekommen und auf die Caption zuzugreifen weiss ich nun dank deines Tips auch .. fehlt mir noch
die 1000x beschriebene MultiLine Funktion die ich nicht hinbekomme.

An welcher Stelle wird denn VirtualStringTree1.MultiLine[Node] := true; gesetzt?
Und muss danach noch etwas erfolgen? Refresh oder sonstiges ... ?


jaenicke - So 16.01.11 12:25

Multiline habe ich dabei ausschließlich selbst gezeichnet (vor allem weil ich auch noch farbliche Markierungen und dynamische verlaufende Hintergründe mitgezeichnet habe). Da müsste ich auch selbst schauen, wie das sonst geht. :nixweiss:

Einen Zeilenumbruch hast du aber in den Text eingefügt?


OliverN_26 - So 16.01.11 12:33

Ja.

Mittlerweile bin ich so weit:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm9.VirtualStringTree1InitNode(Sender: TBaseVirtualTree;
  ParentNode, Node: PVirtualNode;
  var InitialStates: TVirtualNodeInitStates);
begin
  VirtualStringTree1.MultiLine[Node]  := true;
  VirtualStringTree1.NodeHeight[Node] := Node.NodeHeight + 15;
end;


Die Darstellung ist nun zwar 2-zeilig allerdings für "alle" Nodes - also auch die Root-Nodes.
Ich möchte das aber nur für die ChildNodes ?!


jaenicke - So 16.01.11 12:43

Du setzt es ja auch für alle ohne zu schauen was das für ein Node ist. :lol:

Du kannst z.B. das Level des Nodes betrachten zur Unterscheidung.


OliverN_26 - So 16.01.11 12:52

Ein Traum :-)


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm9.VirtualStringTree1InitNode(Sender: TBaseVirtualTree;
  ParentNode, Node: PVirtualNode;
  var InitialStates: TVirtualNodeInitStates);
begin
  if VirtualStringTree1.GetNodeLevel(Node) > 0 then begin
    VirtualStringTree1.MultiLine[Node]  := true;
    VirtualStringTree1.NodeHeight[Node] := Node.NodeHeight + 15;
  end;
end;


danke