窗体构造函数里RichEdit1->DoubleBuffered=true会让RichEdit1为黑色?

ooolinux 2019-07-24 10:33:41
窗体构造函数里RichEdit1->DoubleBuffered=true会让RichEdit1为黑色,且无论字体什么颜色都看不见,为啥呢?
...全文
169 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
draculamx 2019-07-28
  • 打赏
  • 举报
回复
引用 6 楼 ooolinux 的回复:
DoubleBuffered”只作用于由delphi code绘制的控件(派生于TCustomControl or TGraphicControl),这个信息你有详细的资料吗?


没有,这句话,是我在看到你这个帖子以后,去国外网站搜索,有个论坛里,有人这么说的,我并没有查证,只是翻译了过来

要查证也很简单,直接查看cb源码就知道了
ooolinux 2019-07-28
  • 打赏
  • 举报
回复
引用 5 楼 draculamx 的回复:
你所使用的TRichEdit的继承关系是: .....TControl--TWinControl--TCustomEdit--TCustomMemo--TCustomRichEdit--TRichEdit
我明白你的意思了,TRichEdit并不是TCustomControl 更不是 TGraphicControl 的派生类,虽然从更上级的TWinControl 继承有DoubleBuffered属性,但对TRichEdit 没有作用。TRichEdit 实际上是一个Win32控件,VCL做了包装而已。 DoubleBuffered”只作用于由delphi code绘制的控件(派生于TCustomControl or TGraphicControl),这个信息你有详细的资料吗?
draculamx 2019-07-28
  • 打赏
  • 举报
回复
你所使用的TRichEdit的继承关系是:


.....TControl--TWinControl--TCustomEdit--TCustomMemo--TCustomRichEdit--TRichEdit
draculamx 2019-07-28
  • 打赏
  • 举报
回复
不矛盾呀。。。你看看vcl的继承树就明白了








ooolinux 2019-07-28
  • 打赏
  • 举报
回复
引用 9 楼 draculamx 的回复:
VCL有源码的,都在那些PAS文件里,有兴趣可以去研究研究
嗯,暂时懒得研究了。
draculamx 2019-07-28
  • 打赏
  • 举报
回复
VCL有源码的,都在那些PAS文件里,有兴趣可以去研究研究
ooolinux 2019-07-28
  • 打赏
  • 举报
回复
引用 7 楼 draculamx 的回复:
[quote=引用 6 楼 ooolinux 的回复:] DoubleBuffered”只作用于由delphi code绘制的控件(派生于TCustomControl or TGraphicControl),这个信息你有详细的资料吗?
没有,这句话,是我在看到你这个帖子以后,去国外网站搜索,有个论坛里,有人这么说的,我并没有查证,只是翻译了过来 要查证也很简单,直接查看cb源码就知道了[/quote] 嗯,不知道DoubleBuffered跟Canvas属性有没有直接关系?
ooolinux 2019-07-27
  • 打赏
  • 举报
回复
感觉有点矛盾:DoubleBuffered属性是TWinControl拥有的,“DoubleBuffered”只作用于由delphi code绘制的控件(派生于TCustomControl or TGraphicControl)?
draculamx 2019-07-26
  • 打赏
  • 举报
回复
去查了一下,有几个原因:
1.TRichEdit并不支持VCL的“DoubleBuffered”,这个属性只不过是从TWinControl继承而来,这也解释了为什么设计阶段,在TForm的“属性编辑器”中可以直接设置“DoubleBuffered”属性,而TRichEdit的“属性编辑器”中,并没有“DoubleBuffered”属性,只有写代码的时候才能找到这个属性。可见VCL并不打算让你在“属性编辑器”中看到“DoubleBuffered”属性并去设置它。


2.根本原因在于,TRichEdit在运行的时候,是由windows去负责绘制的(和其他windows控件一样),“DoubleBuffered”只作用于由delphi code绘制的控件(派生于TCustomControl or TGraphicControl)
ooolinux 2019-07-26
  • 打赏
  • 举报
回复
引用 1 楼 draculamx 的回复:
去查了一下,有几个原因: 1.TRichEdit并不支持VCL的“DoubleBuffered”,这个属性只不过是从TWinControl继承而来,这也解释了为什么设计阶段,在TForm的“属性编辑器”中可以直接设置“DoubleBuffered”属性,而TRichEdit的“属性编辑器”中,并没有“DoubleBuffered”属性,只有写代码的时候才能找到这个属性。可见VCL并不打算让你在“属性编辑器”中看到“DoubleBuffered”属性并去设置它。 2.根本原因在于,TRichEdit在运行的时候,是由windows去负责绘制的(和其他windows控件一样),“DoubleBuffered”只作用于由delphi code绘制的控件(派生于TCustomControl or TGraphicControl)
可能是这个道理。

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧