最近我注意到我们的一个应用程序在非主题 Windows 上绘制不正确。
工具栏是由嵌套在 TToolbar 中的 TSpeedButton 构建的,TToolbar 又位于页面控件内。
在主题 Windows 上,一切看起来都不错。嗯,不太好,但是还可以。
但是,在非主题 Windows 上,按钮内部会出现奇怪的垂直线。
我四处搜寻,但找不到任何有关此类问题的报告。 (很可能只是我的搜索功夫很糟糕。)有人知道这个问题的描述,或者更好的是,解决办法吗?
最佳答案
TToolbar
并非旨在容纳 TSpeedButtons
。它旨在容纳 TToolButtons
,这些按钮不仅可以位于 TToolBar
上,而且经过专门编写,可以在栏上正确运行。
您遇到的问题(特别是按原样绘制分隔符)是因为您使用不兼容的 TSpeedButton
并使用 TToolButton
分隔符分隔它们。 TSpeedButton
在 TPanel
上运行良好,IIRC 正是为此而设计的,早于 MS 在 ComCtl 中提供 TToolBar/TToolButton
对。
一个快速测试应用程序,其中包含带有 TToolButtons
的 TToolBar
和带有 TSpeedButtons
的 TPanel
应该看看这是否解决了问题。
编辑:您的评论不太正确。 :)
将TToolBar.AllowTextButtons
设置为True,然后将您想要更宽的按钮设置为tbsTextButton
样式。正如您所看到的,我使用了一个普通按钮、一个分隔符、一个文本按钮(带有文本和图像)、一个分隔符和另一个普通按钮。
关于delphi - TToolBar 在非主题 Windows 上绘制不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6759815/