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 Textausrichtung mal anders (https://www.delphipraxis.net/187093-textausrichtung-mal-anders.html)

Alter Mann 27. Okt 2015 16:41

Textausrichtung mal anders
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

im Zuge eines Projektes tauchte auf einmal ein kleines Designproblem'chen' auf.
In einem VST sollen die verfügbaren Sprachen aufgelistet werden und zwar der Name Links und die LCID Rechts.

Wie bekomme ich die LCID-Ausrichtung gleichmäßig hin, ohne zu tief in AfterCellPaint einzugreifen?

Danke

Demo-Code hängt an (läuft unter XE8).

Perlsau 27. Okt 2015 18:53

AW: Textausrichtung mal anders
 
Liste der Anhänge anzeigen (Anzahl: 1)
In deinem VirtualStringTree existiet nur eine Spalte. Benötigt man verschiedene Ausrichtungen, verwendet man entsprechend mehr Spalten. Für dich würde eine zusätzliche Spalte genügen. Zusätzlich solltest du dir einen NodeData-Typen deklarieren:
Delphi-Quellcode:
TYPE
  PNodeData = ^TNodeData;
  TNodeData = Record
               Titel  : String[100];
               Id     : Integer;
              End;
CONST
  SizeNodeData = SizeOf(TNodeData);
Bei der Zuweisung der Node-Daten weist du dem Titel das zu, was bei dir vordem Data.Entry.Caption hieß, der Id die erzeugte Id. Bei mir (ich lese Branchen und Zusatzinfos aus einer Tabelle ein) sieht das so aus:
Delphi-Quellcode:
...
  BranchenStart := Sender.AddChild(Sender.RootNode);
  vData        := Sender.GetNodeData(BranchenStart);
  vData.Id     := Id;
  vData.Titel  := STR_200(Titel);
  Qset_Branchen.Next;
...
In der GetText-Procedure fragst du dann nicht nach dem Level, sondern nach der Spalte:
Delphi-Quellcode:
procedure TFormMain.VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: string);
Var
  vData : PNodeData;

begin
  vData := Sender.GetNodeData(Node);

  Case Column Of
  0 : CellText := String(vData.Titel);
  1 : CellText := String(vData.Id);
  End;
end;
Die Ausrichtung der jeweiligen Spalten nimmst du im ObjectInspector vor.

Ungetestet, da aus einem meiner Projekte herauskopiert ...


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