首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当destroyComponents()和重绘c++builder时闪烁

当destroyComponents()和重绘c++builder时闪烁
EN

Stack Overflow用户
提问于 2015-05-06 14:43:46
回答 1查看 75关注 0票数 0

在c++Builder中,我有一个带有TPageControl的表单,其中有几个带有ScrollBox alClient的TTabSheet。在每个ScrollBox中,动态地绘制几个TStringGrid,并根据OpenDialog读取的二进制文件填充它们的信息。

为了动态创建组件,我编写了一个函数

代码语言:javascript
复制
    void __fastcall TForm1::DynamicDraw()

它接受文件并在所有TTabSheet (带有依赖项)上进行绘图。

出现此问题是因为用户可以删除/添加TStringGrid,从而在所有其他TTabSheet中产生依赖问题。

为了解决这个问题,我决定调用这个函数

代码语言:javascript
复制
    ScrollBox->DestroyComponents();
    DynamicDraw();

对于每个TTabsheet。但是,即使DoubleBuffered被激活,这也会在当前选项卡中创建一个“闪烁”。

有什么想法或信息可以避免这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-06 16:22:05

在进行更新时,将ScrollBox WM_SETREDRAW消息发送到临时禁用屏幕绘制:

代码语言:javascript
复制
SendMessage(ScrollBox->Handle, WM_SETREDRAW, FALSE, 0);
try {
    ScrollBox->DestroyComponents();
    DynamicDraw();
}
__finally {
    SendMessage(ScrollBox->Handle, WM_SETREDRAW, TRUE, 0);
    ScrollBox->Update();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30080041

复制
相关文章

相似问题

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