Ich möchte die Beschriftung in TButton
dynamisch ändern. Das Problem ist, dass TButton
die Größe nicht selbst ändert, wenn die Beschriftung zu lang ist, um auf die Schaltfläche zu passen. so blutet der Text über die Ränder der Schaltfläche.
Wie kann ich mit der Taste die Größe ändern, um sie an die Beschriftung anzupassen?
Einige Ideen:
TButton
und AutoSize=True
setzen (habe das nicht versucht, weiß nicht, ob es funktioniert). Unterklasse TButton
, machen Sie die bereits vorhandene Eigenschaft AutoSize
öffentlich und implementieren Sie CanAutoSize
:
Um Davids Kommentar zu beantworten, warum die hartcodierten 8 Pixel : Einfach gesagt, es sieht gut aus. Aber ich habe ein wenig visuelle Nachforschungen über Randbreiten von Knöpfen gemacht:
%Vor% Informationen zum Betriebssystem finden Sie unter Abrufen der Windows-Version . Theming könnte durch Auswertung von Themes.ThemeServices.ThemesEnabled
berücksichtigt werden. Wenn dies der Fall ist, kann der für den Text reservierte Inhalt mit GetThemeBackgroundContentRect
, die von der ThemeServices
-Variable umschlossen wird:
Wenn ich meinen Test mit dieser Routine wiederhole, wird eine konstante Rahmengröße von 3 Pixeln in jeder Version und mit jedem Knopfzustand angezeigt. Somit belassen 8 Pixel des gesamten Rands 1 Pixel Atempause für den Text.
Und um die Schriftgröße zu berücksichtigen, schlage ich folgende Änderung vor:
%Vor%Und ich muss ehrlich sein: Es sieht besser aus.
Tags und Links delphi button delphi-2010 autosize