我注意到当你将按钮的样式设置为tbsDropdown时,TToolButton的高度会增加。我可以理解宽度增加,因此按钮有空间来绘制向下箭头,但我不确定是否需要增加高度。
重现问题的步骤(Delphi 2010,Windows 7 x64):
当分配了图像时,会发生相同的高度增加 工具栏,在这种情况下,已经有更多的垂直空间可用 在按钮中绘制下拉列表。
这是一个直观的例子: alt text http://img440.imageshack.us/img440/1462/ttoolbar02.png alt text http://img291.imageshack.us/img291/966/ttoolbar01.png
在不破解VCL的情况下是否有针对此的解决方法,或者是否将其硬编码到Windows控件中?
答案 0 :(得分:3)
它是底层Windows控件的一部分。快速查看ComCtrls
表示更改TToolButton.Style
会调用它的SetStyle
方法。如果在SetStyle
中,ShowCaptions
为True,则TToolBar.ButtonWidth
和ButtonHeight
都设置为0,并调用TToolButton.RecreateButtons
。
RecreateButtons
会调用TToolBar.ResizeButtons
,只需使用
ToolBar
发送(发布)消息
Perform(TB_AUTOSIZE, 0, 0);
根据{{3}},打算使用 TB_AUTOSIZE
通过设置按钮或位图大小或首次添加字符串来改变工具栏的大小。
由于SetStyle
将ButtonWidth
和ButtonHeight
都设为0,因此该消息似乎已正确发送。
答案 1 :(得分:2)
基础窗口控件中的主题支持看起来有问题。关闭运行时主题(项目/选项/应用程序,取消选中“启用运行时主题”复选框),忽略设计时增加的按钮高度(Delphi IDE使用主题)并运行应用程序 - 您将看到工具栏按钮的正常高度。