![]() |
VirtualStringTree
Hi,
ich fange gerade an etwas rum zu experementieren mit der Komponente VirtualStringTree, jedoch finde ich diese Komponente doch sehr schwer zu verstehen ohne hintergrund wissen. Hat jemand ein gutes Tutorial welches leicht verständlich ist? z.B krieg ich es einfach nicht hin einen Node um zu bennen. |
Re: VirtualStringTree
Hey,
Schau mal bei den Kollegen von DSDT.Info: ![]() Viele Grüße |
Re: VirtualStringTree
Zitat:
Habe ich alles ausprobiert jedoch bleibt immer Node stehen. Hat jemand eine Hilfe? |
Re: VirtualStringTree
Du meinst den Text, der da bei einem Knoten im Treeview steht? Die Komponente selbst weiß gar nicht so recht, was sie da schreiben soll. Der Text "Node" ist da eher eine "Verlegenheitslösung" seitens des Trees. *g*
Wenn der Treeview wissen will, welchen Text er zu einer Node auswerfen soll, dann löst er das Ereignis "OnGetText" aus. Den Handler dazu musst Du selbst schreiben. Anhand der Node, die Du als Parameter bekommst, musst Du deren Daten extrahieren und dann einen geeigneten Text zurückliefern (das ist dann der VAR-Parameter des Handlers, heißt glaube ich "CellText" oder so ähnlich. Ist aber klar erkennbar, was zutun ist). |
Re: VirtualStringTree
In dem Tutorial kannst Du also "nichts" zu OnGetText bzw. zur Beschriftung finden? Interessant, auf Seite 4 steht es nämlich ...
![]() |
Re: VirtualStringTree
Zitat:
Delphi-Quellcode:
type
PTreeData = ^TTreeData; TTreeData = record FCaption: String; FColumn1: String; end;
Delphi-Quellcode:
function AddVSTStructure(AVST: TCustomVirtualStringTree; ANode: PVirtualNode;
ARecord: TTreeData): PVirtualNode; var Data: PTreeData; begin Result:=AVST.AddChild(ANode); Data:=AVST.GetNodeData(Result); Avst.ValidateNode(Result, False); Data^.FCaption:=ARecord.FCaption; end; procedure TForm1.Button1Click(Sender: TObject); var I: Integer; TreeData: TTreeData; begin VST.NodeDataSize:=SizeOf(TTreeData); VST.BeginUpdate; for I:=0 to 5 do begin TreeData.FCaption:='Node-Nummer: '+IntToStr(I); AddVSTStructure(VST,nil,TreeData); end; VST.EndUpdate; end; procedure TForm1.FormCreate(Sender: TObject); begin VST.NodeDataSize:=SizeOf(TTreeData); end; procedure TForm1.vstGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: Integer; TextType: TVSTTextType; var CellText: WideString); var Data: PTreeData; begin Data:=VST.GetNodeData(Node); CellText := Data^.FCaption; end; Die Nodes hießen immernoch Node |
Re: VirtualStringTree
Hast Du im Objekt-Inspektor beim VST unter "Ereignisse" dem OnGetText auch deine "vstGetText" Methode zugewiesen? Hast Du mal im Debugger geschaut, ob und wie sie (mit welchem Wert für Data.FCaption) aufgerufen wird?
Ansonsten würde ich Dir noch empfehlen in der "AddVSTStructure" Methode einfach den String für den Text direkt zu übergeben (nochmal "TTreeData" als Parameter scheint mir da etwas redundant) Viele Grüße |
Re: VirtualStringTree
Zitat:
Allerdings hattest du recht, es war gar nicht bei Ereignisse eingetragen. Danke nun versteh ich es endlich auch :cheer: |
Re: VirtualStringTree
Es gibt doch noch das DelphiPraxis Stammtischvideo.
Kennst du das? ![]() Dort wird viel gezeigt und erklärt. |
Re: VirtualStringTree
Danke.
Lade ich mir mal direkt runter. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz