Einzelnen Beitrag anzeigen

Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#5

Re: VST mehrzeiligen text in Celle zentrieren?

  Alt 22. Okt 2008, 09:26
@sh17

Er steht immer oben direkt am Anfang. Ich will ihn aber vertikal Zenriert.

Normalerweise kalkuliert er über das Ereignis onMeasureItem ja automatisch die Nodeheight, sodas die Zellenhöhe dem
Text angepasst wird. Ich habe diesen Wert dann einfach noch was hinzuadiert, weil ich über und unter dem Text noch einen
Abstand will. Auch habe ich versucht im onbeforecellpaint selber zu Zeichen, jedoch Zeichnet er dann alles in der
selben Zeile. Von OG Karotte habe ich diesen Codeschnipsel bekommen, jedoch muss bei VST irgendwas an den Ereignisroutinen geädert worden sein. Bei der aktuelle Version sind verschiedene Parameter in der Ereignisroutine nicht mehr verfügbar

Delphi-Quellcode:
procedure TfrmMain.MyVSTBeforeCellPaint(Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node:
PVirtualNode; ItemRect: TRect; var CustomDraw: Boolean); //var Customdraw existiert bei mir nicht.

var
  S: WideString;
  MyData: PTMyNodeData;
  TheRect: TRect;

begin
  MyNodeData := Sender.GetNodeData(Node); // Daten holen
  S := System.Copy(MyNodeData.Text, 1, Length(MyNodeData.Text)); // Text holen
  // <-- hier Berechnung für TheRect (Ausmasse der zubefüllenden Zelle; müsste ItemRect entspr.) einfügen
  Windows.DrawTextW(TargetCanvas.Handle, PWideChar(S), Length(S),
                    TheRect, DT_EXPANDTABS or DT_SINGLELINE or DT_END_ELLIPSIS or
                    DT_CENTER or DrawTextBiDiModeFlagsReadingOnly); // Text ausgeben (DT_CENTER => Zentriert im 'TheRect')
  CustomDraw := True; // Damit der VST die Zelle nicht nochmal zeichnet ???
end;
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat