2010-03-26 70 views
7

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

步骤来重现问题(德尔福2010,Windows 7的64位):

  • 添加TToolbar的形式,ShowCaptions =真
  • 右键点击一个按钮添加到工具栏
  • 设置按钮风格= tbsDropDown和通知按钮生长在高度

当有分配给该工具条 图像相同的高度增加发生,在这种情况下,存在ALR伊迪有足够多的垂直空间可用 在按钮中绘制下拉。

这里有一个直观例子: alt text http://img440.imageshack.us/img440/1462/ttoolbar02.png alt text http://img291.imageshack.us/img291/966/ttoolbar01.png

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

回答

3

它是底层Windows控件的一部分。快速查看ComCtrls表明更改TToolButton.Style称其为SetStyle方法。如果在SetStyle,ShowCaptions为真,则TToolBar.ButtonWidthButtonHeight都被设置为0,并调用TToolButton.RecreateButtons

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

Perform(TB_AUTOSIZE, 0, 0); 

TB_AUTOSIZE意图被使用的消息到ToolBar,根据MSDN,引起后

通过设置按钮或位图大小或第一次添加字符串来更改工具栏的大小。

由于SetStyle集两者ButtonWidthButtonHeight为0,该消息似乎被正确发送。

1

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

相关问题