Delphi TBS分离器ToToButter在一个非主题ToToBar中具有扁平样式,中间有一条垂直线-如何修复?

Delphi TBS分离器ToToButter在一个非主题ToToBar中具有扁平样式,中间有一条垂直线-如何修复?,delphi,delphi-7,toolbar,Delphi,Delphi 7,Toolbar,我的问题与此有关: 我有一个Delphi 7应用程序,其中在TToolBar上有一个TToolButton和Style=tbsSeparator的TToolBar和Flat=True。如果工具栏主题化(即,如果我的应用程序具有主题清单(XPMan),并且在运行应用程序的系统上启用了Windows主题),则使用上述问题中接受的修复程序,将按预期绘制tbsSeparator和tbsDivider) 但是,如果应用程序没有清单,或者如果系统没有启用主题,则在中间使用垂直线绘制,略小于 tbs除除器<

我的问题与此有关:

我有一个Delphi 7应用程序,其中在
TToolBar
上有一个
TToolButton
Style=tbsSeparator
TToolBar
Flat=True
。如果工具栏主题化(即,如果我的应用程序具有主题清单(
XPMan
),并且在运行应用程序的系统上启用了Windows主题),则使用上述问题中接受的修复程序,将按预期绘制
tbsSeparator
tbsDivider

但是,如果应用程序没有清单,或者如果系统没有启用主题,则在中间使用垂直线绘制<<代码> TBS分离器< /代码>,略小于<代码> tbs除除器< /代码>:

在屏幕截图上,左边的是一个
tbsSeparator
(它不应该在中间有一行),右边的是一个
tbsDivider
(这个没问题)

如果我关闭
Flat
样式,一切正常,但我希望
Flat
样式位于非主题工具栏上

<> P> >问题> <强> >如何在没有主题的<代码> ToToBar 中间用垂直线绘制< <代码> TBS分离器< /代码> < <代码>平面< /代码> < <强> > /p> < p>这里引用的是:

BTNS_SEP样式在按钮之间创建一个小间隙或绘制一个 在平面工具栏上的按钮之间蚀刻


它指出,蚀刻是在平面工具栏的分隔符上绘制的。没有提到主题依赖性。

可能重复@David我特别提到了这个问题,它解决了部分问题,但没有解决我在这个问题中提到的部分问题。它解决了在<>代码> TBS分离器< /代码>左边的不必要的线和在主题工具栏上的<代码> tbs除除器< /代码>,而不是在非主题工具栏上的<代码> TBS分离器< /代码>的中间的不必要的行。请注意,我希望将平面样式保留在非主题工具栏上,关键是没有解决方案。这是另一个问题的结论。@David我看不到这样的结论。这个问题在另一个问题中根本没有提到。虽然相关,但这是一个不同的问题。这里的问题是一个主题工具栏和左边的一条线,这里的问题是一个非主题的工具栏和中间的一条线。这里的问题有一个解决办法。@Sertac谢谢你把事情弄清楚。我没有看到msdn文档,我只看了说明tbsSeparator显示为空白的部分,省略了“或绘制蚀刻”部分。我认为问题的原因可能是不同的,因为这条线被画在中间,当工具栏不是主题的时候,左边是主题的时候(我仍然不明白为什么)。尽管如此,我认为一个更好的答案是覆盖绘制过程,尽管正如大卫所说,可能会出现闪烁。