TToolButton高度随Style = tbsDropdown增长
我注意到,当您将按钮的样式设置为tbsDropdown时,TToolButton的高度会增加。 我可以理解宽度的增加,所以按钮有空间绘制向下的箭头,但我不确定是否需要增加高度。
重现问题的步骤(Delphi 2010,Windows 7 x64):
当有图像分配给工具栏时,会发生同样的高度增加,在这种情况下,按钮中可用的垂直空间已足够多,以便绘制下拉菜单。
以下是一个视觉示例:替代文字http://img440.imageshack.us/img440/1462/ttoolbar02.png替代文字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,所以此消息似乎被正确发送。
看起来像是底层窗口控件中的主题支持出了问题。 关闭运行时主题(Project / Options / Application,取消选中“启用运行时主题”复选框),在设计时忽略增加的按钮高度(Delphi IDE使用主题)并运行应用程序 - 您将看到工具栏按钮的正常高度。
链接地址: http://www.djcxy.com/p/45249.html