TToolButton高度随Style = tbsDropdown而增长

时间:2010-03-26 09:13:43

标签: delphi

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

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

  • 将TToolbar添加到表单,ShowCaptions = True
  • 右键单击以向工具栏添加按钮
  • 设置按钮Style = tbsDropDown并注意按钮的高度增长

当分配了图像时,会发生相同的高度增加 工具栏,在这种情况下,已经有更多的垂直空间可用 在按钮中绘制下拉列表。

这是一个直观的例子: alt text http://img440.imageshack.us/img440/1462/ttoolbar02.png alt text http://img291.imageshack.us/img291/966/ttoolbar01.png

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

2 个答案:

答案 0 :(得分:3)

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

反过来,

RecreateButtons会调用TToolBar.ResizeButtons,只需使用

ToolBar发送(发布)消息
Perform(TB_AUTOSIZE, 0, 0);
根据{{​​3}},

打算使用

TB_AUTOSIZE

  

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

由于SetStyleButtonWidthButtonHeight都设为0,因此该消息似乎已正确发送。

答案 1 :(得分:2)

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