Danke für Eure Tipps. Mit folgender Funktion kann ich die Textbreite ermitteln.
Delphi-Quellcode:
function TForm1.GetCaptionWidth: integer;
var
MyStruct: TNonClientMetrics;
begin
MyStruct.cbSize:=SizeOf(TNonClientMetrics);
SystemParametersInfo(
SPI_GETNONCLIENTMETRICS,
SizeOf(TNonClientMetrics),
@MyStruct,
0);
Self.Canvas.Font.Handle := CreateFontIndirect (MyStruct.lfCaptionFont);
Result:= Self.Canvas.TextExtent (Self.Caption).cx;
end;
Ich bin mir jetzt nur nicht sicher, ob ich mit CreateFontIndirect ein Memoryleak erzeuge. Wenn ja, wie kann ich den erzeugten Font freigeben, ohne den Font meines Forms zu zerstören?