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 TVirtualStringTree Header Text senkrecht 90° gedreht (https://www.delphipraxis.net/100915-tvirtualstringtree-header-text-senkrecht-90%B0-gedreht.html)

madas 5. Okt 2007 13:07


TVirtualStringTree Header Text senkrecht 90° gedreht
 
Hallo,

Wenn man ein TVirtualStringTree mit sehr vielen Spalten hat, kann es von Vorteil sein die Überschriften senkrecht um 90° gedreht darzustellen.

Versucht habe ich es so:

Delphi-Quellcode:
procedure TForm.vstHeaderDraw(
  Sender: TVTHeader; HeaderCanvas: TCanvas; Column: TVirtualTreeColumn;
  R: TRect; Hover, Pressed: Boolean; DropMark: TVTDropMarkMode);
var
  lf: TLogFont;
  tf: TFont;
  re, bt: Integer;
begin
  tf:=TFont.Create;
  try
    tf.Assign(Font);
    GetObject(tf.Handle, sizeof(lf), @lf);
    lf.lfEscapement:=900;
    lf.lfOrientation:=0;
    tf.Handle:=CreateFontIndirect(lf);
    HeaderCanvas.Font.Assign(tf);
  finally
    tf.Free;
  end;

  re := R.Right;
  bt := R.Bottom;
  R.Right := bt;
  R.Bottom := re;
  HeaderCanvas.FillRect(R);
  HeaderCanvas.TextRect(R, R.Left + 2, R.Bottom - 2, Column.Text);
end;
Beim Header habe ich auch die Option OwnerDraw auf true gesetzt. Jedoch sieht alles so wie vorher aus. Sprich waagerechte Schrift.

Hat schon mal jemand den Text im Header senkrecht dargestellt und kann mir bei meinem Problem weiter helfen?

Danke

Hawkeye219 5. Okt 2007 13:31

Re: TVirtualStringTree Header Text senkrecht 90° gedreht
 
Hallo,

ohne deinen Code genau zu untersuchen: hast du eine TrueType-Schriftart verwendet? Nur diese können über die Windows-API gedreht werden.

Gruß Hawkeye

madas 5. Okt 2007 13:39

Re: TVirtualStringTree Header Text senkrecht 90° gedreht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Im Header ist MS Sans Serif. Aber auch wenn das keine sein sollte, mit Arial geht es auch nicht.

Bei Debuggen wird nicht mal die vstHeaderDraw aufgerufen. Ich dachte, wenn man die Option OwnerDraw beim Header auf true setzt,
sollte das eigentlich passieren?

Woran kann das liegen?

Edt: Anbei mal ein Testprojekt. Dort funktioniert das Drehen der Schrift auf einem Form. Die Frage bleibt also warum wird die
onHeaderDraw Methode nicht auf gerufen.

s-off 5. Okt 2007 13:57

Re: TVirtualStringTree Header Text senkrecht 90° gedreht
 
Zitat:

Zitat von madas
Woran kann das liegen?

Schau Dir des Autors Kommentar zum TVTHeaderPaintEvent an ;)

madas 5. Okt 2007 14:05

Re: TVirtualStringTree Header Text senkrecht 90° gedreht
 
Zitat:

Zitat von s-off
Zitat:

Zitat von madas
Woran kann das liegen?

Schau Dir des Autors Kommentar zum TVTHeaderPaintEvent an ;)

Ok. Ich habe gefunden, was du meinst. Bei den Columns muss der Style auch auf OwnerDraw stehen.
Danke, damit werde ich weiter kommen denke ich.


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