我注意到当您将按钮的样式设置为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控件中?

    最佳答案

    它是基础Windows控件的一部分。快速浏览ComCtrls显示更改TToolButton.Style称为SetStyle方法。如果在SetStyle中,ShowCaptions为True,则TToolBar.ButtonWidthButtonHeight都设置为0,并调用TToolButton.RecreateButtons
    RecreateButtons依次调用TToolBar.ResizeButtons,它仅使用以下命令向ToolBar发送(发布)消息

    Perform(TB_AUTOSIZE, 0, 0);
    

    根据MSDN,打算使用TB_AUTOSIZE



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

    10-06 09:36