最近我注意到我们的一个应用程序在非主题Windows上绘制错误。
工具栏是由嵌套在TToolbar中的TSpeedButtons构建的,而TToolbar又存在于页面控件中。
在主题Windows上,一切看起来都不错。嗯,不好,但还可以。
然而,在非主题的Windows上,按钮内会出现奇怪的垂直线条。
我已经四处搜索,但找不到任何关于此类问题的报告。 (很可能只是我的搜索功夫糟透了。)有没有人知道这个问题的描述,或者更好的是,修复?
答案 0 :(得分:6)
TToolbar
并非旨在保留TSpeedButtons
。它被设计为保持TToolButtons
,它不仅可以放在TToolBar
上,而且可以专门编写以在条形图上正确运行。
您遇到的问题(尤其是分隔符按照它们的方式绘制)是因为您使用了不兼容的TSpeedButton
并将它们与TToolButton
分隔符分开。 TSpeedButton
在TPanel
上运行良好,而IIRC的设计目的仅限于MS在ComCtl中提供TToolBar/TToolButton
对之前的情况。
包含TToolBar
TToolButtons
和TPanel
TSpeedButtons
的快速测试应用程序应该会看到这是否解决了问题。
将TToolBar.AllowTextButtons
设置为True,然后将您希望更宽的按钮设置为样式tbsTextButton
。如您所见,我使用了普通按钮,分隔符,文本按钮(带文本和图像),分隔符和另一个普通按钮。
答案 1 :(得分:2)
正如TOndrej在评论中所说,当TSpeedButton.Flat
和.Transparent
都设置为True时会发生这种情况。大卫发现,TToolbar
必须将.Flat
设置为True才能发生问题。
不需要更改VCL源代码的解决方法是将.Transparent
设置为False。