【发布时间】:2011-07-20 09:34:25
【问题描述】:
我最近注意到我们的一个应用程序在非主题 Windows 上绘制不正确。
工具栏是由嵌套在 TToolbar 中的 TSpeedButtons 构建的,而 TToolbar 又位于页面控件中。
在主题 Windows 上,一切看起来都不错。嗯,不太好,但还可以。
但是,在非主题 Windows 上,按钮内会出现奇怪的垂直线。
我四处搜索,但找不到任何关于此类问题的报告。 (很可能只是我的搜索功夫很烂。)有人知道这个问题的描述,或者更好的是,解决方法吗?
【问题讨论】:
-
对不起,这些到底有什么问题?
-
@mj2008:请参阅“添加”、“编辑”、“删除”和“复制”按钮 - 它们在中间用垂直线绘制,不应该存在。
-
在 D6 和 D2010 中重现,平面工具栏中的平面速度按钮。
-
@gabr:TToolbar 的设计目的不是容纳 TSpeedButtons。它的设计目的是容纳 TToolButtons,这些按钮不仅可以放在 ToolBar 上,而且是专门编写的,可以在工具栏上正确运行。您遇到的问题(尤其是按原样绘制分隔符的情况)是因为您使用了不兼容的 SpeedButton 并用工具按钮将它们分开。 TSpeedButton 在 TPanel 上运行良好,而 IIRC 就是在 MS 在 ComCtl 中提供 TToolBar/TToolButton 对之前设计的。一个带有 TToolBar w/TToolButtons 和一个 TPanel w/Speedbuttons 的快速测试应用程序会告诉你。
-
TToolBar.UpdateItem在fStyle中包含TBSTYLE_SEP,用于TB_INSERTBUTTON消息。那似乎是垂直线所在的位置。但是,我不知道工具栏是如何工作的!!