带有多行标题的TButton的高度不适合其标题文本

在 Windows 10 上的 Delphi 10.4.2 Win32 VCL 应用程序中,我有一个TButtonwithWordWrap = TrueCaption = 'SAVE TO INTERNET BOOKMARKS FOLDER...'

从截图中可以看出,按钮的高度不会自动适应其Caption文本。

是否有TButton自动实现此功能的功能,还是必须手动调整?

回答

不,TButtonVCL没有自动调整 a 的高度。

如果您更改按钮标题的字体,或将其设为多行,您通常必须自己明确调整按钮的高度。

作为对比,TEdit确实有AutoSize属性。这不会映射到 Win32 EDIT 控件的功能(如窗口样式),而是纯粹在 VCL 中实现(请参阅 参考资料Vcl.StdCtrls.TCustomEdit.AdjustHeight())。

但是,我刚刚发现底层的 Win32 BUTTON 控件确实通过BCM_GETIDEALSIZE消息或Button_GetIdealSize()宏提供了此功能:

uses
  ..., Winapi.CommCtrl;

var
  S: TSize;
begin
  S.cx := Button1.Width;
  if Button_GetIdealSize(Button1.Handle, S) then
    Button1.Height := S.cy;

这将设置给定按钮当前文本和所需宽度的高度。如果S最初为零,您将获得按钮的首选宽度和高度。

Win32 控件提供比其 VCL 包装器公开的功能更多的功能并不少见,因此查看 Win32 文档通常是个好主意,尤其是您可以发送到控件的消息(以及它的样式)。


以上是带有多行标题的TButton的高度不适合其标题文本的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>