首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TToolbar是否与TForm.DoubleBuffered不兼容?

TToolbar是否与TForm.DoubleBuffered不兼容?
EN

Stack Overflow用户
提问于 2013-03-25 17:44:46
回答 2查看 1.3K关注 0票数 7

我使用的是Delphi XE3。

当我创建一个新的VCL项目并在上面拖放一个TToolbar时,一切都很正常--除了我激活Form1.DoubleBuffered的时候。

从那一刻起,工具栏的绘制就中断了-在设计时,它要么是黑色的,要么是透明的,要么是IDE的一部分(状态栏,工具栏等)。都被复制到其中。当我单击它时,以及当我切换到源代码(F12)并返回时,它会在这些选项之间切换。

在运行时,它总是黑色的。

使用DrawingStyle=dsGradient,一切都按预期工作。切换回dsNormal会再次破坏它。

停用Form1.DoubleBuffered可以修复它。

有什么建议可以解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-25 18:16:40

在我看来,解决方案是将TForm.DoubleBuffered设置为False。使用True值会导致各种其他问题。在XP主题出现之前,这个属性运行得相当好,但在我看来,自从它们出现后,使用TForm.DoubleBuffered就不可行了。

除了您遇到的问题之外,我在使用Windows Basic主题时还遇到了许多绘画缺陷。我知道这不是主流,但我碰巧在远程访问中看到了很多。而且还有更多。当您对窗体进行双缓冲时,主题动画将停止工作。例如,默认按钮发出脉冲以指示它是默认按钮。

如果在没有对窗体进行双缓冲的情况下调整大小时出现闪烁,请使用ideas from my answer to another question。从评论中看,你想要对抗的闪光似乎是在一个颜料盒里。我显然不知道细节,但我的经验和直觉告诉我,您应该能够很容易地在本地级别处理这种闪烁。当然不应该需要全局窗体范围的双缓冲。

票数 4
EN

Stack Overflow用户

发布于 2013-03-25 18:06:29

如本文所述,When not to use DoubleBufferedTToolBarTRichEdit等一些控件在DoubleBuffered属性设置为true时不能很好地工作。

原因可以在文档TWinControl.DoubleBuffered中找到,其中一些WinControls不能在临时位图上绘制自己(当DoubleBuffered为true时就会发生这种情况)。

一种解决方法是将TToolBar放在TPanel上。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15611807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档