我注意到当您将按钮的样式设置为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控件中?
最佳答案
它是基础Windows控件的一部分。快速浏览ComCtrls
显示更改TToolButton.Style
称为SetStyle
方法。如果在SetStyle
中,ShowCaptions
为True,则TToolBar.ButtonWidth
和ButtonHeight
都设置为0,并调用TToolButton.RecreateButtons
。RecreateButtons
依次调用TToolBar.ResizeButtons
,它仅使用以下命令向ToolBar
发送(发布)消息
Perform(TB_AUTOSIZE, 0, 0);
根据MSDN,打算使用
TB_AUTOSIZE
,由于
SetStyle
将ButtonWidth
和ButtonHeight
都设置为0,因此此消息似乎已正确发送。