AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Virtual String Tree Node-Text versetzen?
Thema durchsuchen
Ansicht
Themen-Optionen

Virtual String Tree Node-Text versetzen?

Ein Thema von a.def · begonnen am 14. Jan 2017 · letzter Beitrag vom 14. Jan 2017
Antwort Antwort
a.def
(Gast)

n/a Beiträge
 
#1

Virtual String Tree Node-Text versetzen?

  Alt 14. Jan 2017, 12:45
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 Sender.GetNodeLevel(Node) > 0 machen.

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;

Geändert von a.def (14. Jan 2017 um 12:59 Uhr)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Virtual String Tree Node-Text versetzen?

  Alt 14. Jan 2017, 13:32
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 TextMargin und Indent an.

Bei unterschiedlichen Einzügen pro Level bietet sich entweder Indent, oder vielleicht in dem Fall noch besser, OwnerDraw an.

Vielleicht solltest du aber die Canvas.TextOut() Procedure verwenden anstatt Windows.DrawTextW() . Macht zwar schlussendlich keinen Unterschied, lässt sich aber vielleicht besser handlen. Das TargetCanvas hast du ja bereits als Parameter übergeben bekommen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:38 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