![]() |
Virtual String Tree Node-Text versetzen?
Ist es irgendwie möglich einen den Text eines Nodes im Virtual String Tree etwas weiter nach links zu setzen?
Genauer gesagt möchte ich das bei allen Nodes mit
Delphi-Quellcode:
> 0 machen.
Sender.GetNodeLevel(Node)
Ich weiß wie ich Texte und Hintergründe färbe aber obiges Problem bekomme ich nicht gelöst. Edit ich denke ich habe es geschafft. Nur ob schön, weiß ich nicht
Delphi-Quellcode:
procedure TForm1.VSTDrawText(Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; const Text: string; const CellRect: TRect; var DefaultDraw: Boolean);
var DrawFormat: Cardinal; R: TRect; begin if (Sender.GetNodeLevel(Node) > 0) and (Node.ChildCount = 0) then begin DefaultDraw := False; R := CellRect; R.Left := R.Left - TVirtualStringTree(Sender).Indent; DrawFormat := DT_NOPREFIX or DT_VCENTER or DT_SINGLELINE; Windows.DrawTextW(TargetCanvas.Handle, PWideChar(Text), Length(Text), R, DrawFormat); end; end; |
AW: Virtual String Tree Node-Text versetzen?
Es gibt diverse Möglichkeiten. Entweder so wie du es gemacht hast mit OwnerDraw oder aber auch über die Eigenschaften des Trees. Schau dir mal die Properties
Delphi-Quellcode:
und
TextMargin
Delphi-Quellcode:
an.
Indent
Bei unterschiedlichen Einzügen pro Level bietet sich entweder Indent, oder vielleicht in dem Fall noch besser, OwnerDraw an. Vielleicht solltest du aber die
Delphi-Quellcode:
Procedure verwenden anstatt
Canvas.TextOut()
Delphi-Quellcode:
. Macht zwar schlussendlich keinen Unterschied, lässt sich aber vielleicht besser handlen. Das
Windows.DrawTextW()
Delphi-Quellcode:
hast du ja bereits als Parameter übergeben bekommen.
TargetCanvas
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:08 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