Delphi t工具按钮高度随样式增加=TBSDROPTDOWN

Delphi t工具按钮高度随样式增加=TBSDROPTDOWN,delphi,Delphi,我注意到,当您将按钮的样式设置为tbsDropdown时,TToolButton的高度会增加。我可以理解宽度的增加,因此按钮有空间绘制向下箭头,但我不确定是否需要增加高度 重现问题的步骤(Delphi 2010,Windows 7 x64): 将TToolbar添加到表单,ShowCaptions=True 右键单击可将按钮添加到工具栏 设置按钮样式=tbsDropDown,注意按钮的高度会增加 当有图像指定给对象时,会出现相同的高度增加 工具栏,在这种情况下,已经有足够多的垂直空间可用 在

我注意到,当您将按钮的样式设置为tbsDropdown时,TToolButton的高度会增加。我可以理解宽度的增加,因此按钮有空间绘制向下箭头,但我不确定是否需要增加高度

重现问题的步骤(Delphi 2010,Windows 7 x64):

  • 将TToolbar添加到表单,ShowCaptions=True
  • 右键单击可将按钮添加到工具栏
  • 设置按钮样式=tbsDropDown,注意按钮的高度会增加
当有图像指定给对象时,会出现相同的高度增加 工具栏,在这种情况下,已经有足够多的垂直空间可用 在按钮中绘制下拉列表

下面是一个直观的示例:


是否有一种在不破坏VCL的情况下解决此问题的方法,或者将其硬编码到Windows控件中?

它是底层Windows控件的一部分。快速查看
ComCtrls
显示,更改
TToolButton.Style
将调用它的
SetStyle
方法。如果在
SetStyle
中,
ShowCaptions
为True,则
TToolBar.ButtonWidth
ButtonHeight
都设置为0,并且调用
TToolButton.RecreateButtons

重新创建按钮
,然后调用
TToolBar.ResizeButtons
,只需使用将消息发送(发布)到
工具栏

Perform(TB_AUTOSIZE, 0, 0);
根据

通过设置按钮或位图大小或首次添加字符串来更改工具栏大小后


由于
SetStyle
ButtonWidth
ButtonHeight
设置为0,因此此消息似乎已正确发送。

底层windows控件中的主题支持似乎有问题。关闭运行时主题(项目/选项/应用程序,取消选中“启用运行时主题”复选框),忽略设计时增加的按钮高度(Delphi IDE使用主题)并运行应用程序-您将看到工具栏按钮的正常高度