TToolButton高度随Style = tbsDropdown增长

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

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

  • 将TToolbar添加到表单,ShowCaptions = True
  • 右键单击将一个按钮添加到工具栏
  • 设置按钮Style = tbsDropDown并注意按钮高度增长
  • 当有图像分配给工具栏时,会发生同样的高度增加,在这种情况下,按钮中可用的垂直空间已足够多,以便绘制下拉菜单。

    以下是一个视觉示例:替代文字http://img440.imageshack.us/img440/1462/ttoolbar02.png替代文字http://img291.imageshack.us/img291/966/ttoolbar01.png

    有没有解决方法,而不是黑客的VCL,或者这是硬编码到Windows控制?


    它是底层Windows控件的一部分。 快速查看ComCtrls显示,更改TToolButton.Style称它为SetStyle方法。 如果在SetStyleShowCaptions为True,那么TToolBar.ButtonWidthButtonHeight都设置为0,并TToolButton.RecreateButtons

    RecreateButtons ,反过来,调用TToolBar.ResizeButtons ,其简单地发送(公告)消息给ToolBar使用

    Perform(TB_AUTOSIZE, 0, 0);
    

    根据MSDN的说法,打算使用TB_AUTOSIZE

    在通过设置按钮或位图大小或第一次添加字符串导致工具栏的大小发生改变之后。

    由于SetStyleButtonWidthButtonHeight都设置为0,所以此消息似乎被正确发送。


    看起来像是底层窗口控件中的主题支持出了问题。 关闭运行时主题(Project / Options / Application,取消选中“启用运行时主题”复选框),在设计时忽略增加的按钮高度(Delphi IDE使用主题)并运行应用程序 - 您将看到工具栏按钮的正常高度。

    链接地址: http://www.djcxy.com/p/45249.html

    上一篇: TToolButton Height Grows with Style = tbsDropdown

    下一篇: Finding patterns of failure in a Unit Test