Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#5

AW: Textbreite innerhalb der Titelleiste

  Alt 18. Jun 2010, 13:52
Das sollte über den TFont vom TCanvas erschlagen sein. Du weist ja das .Handle zu und die VCL kümmert sich dann darum, ergo schon richtig wie du das gemacht hast. Ich finde keinen Fehler in deinem Source, mal abgesehen davon das du das explizite Self weglassen könntest. Und eben den Punkt das alle Zeichenroutinen die später auf TForm.Canvas aufsetzen nun mit dem Font der Titelzeile arbeiten.

Gruß Hagen

Delphi-Quellcode:
function TForm1.GetCaptionWidth: integer;
var
  Metrics: TNonClientMetrics;
begin
  Metrics.cbSize := SizeOf(Metrics);
  SystemParametersInfo(SPI_GETNONCLIENTMETRICS, SizeOf(Metrics), @Metrics, 0);
  Canvas.Font.Handle := CreateFontIndirect(Metrics.lfCaptionFont);
  Result := Canvas.TextExtent(Caption).cx;
  Canvas.Font.Assign(Font); // originalen Font aus TForm.Font restaurieren
end;

Geändert von negaH (18. Jun 2010 um 13:57 Uhr)
  Mit Zitat antworten Zitat