在c++Builder中,我有一个带有TPageControl的表单,其中有几个带有ScrollBox alClient的TTabSheet。在每个ScrollBox中,动态地绘制几个TStringGrid,并根据OpenDialog读取的二进制文件填充它们的信息。
为了动态创建组件,我编写了一个函数
void __fastcall TForm1::DynamicDraw()它接受文件并在所有TTabSheet (带有依赖项)上进行绘图。
出现此问题是因为用户可以删除/添加TStringGrid,从而在所有其他TTabSheet中产生依赖问题。
为了解决这个问题,我决定调用这个函数
ScrollBox->DestroyComponents();
DynamicDraw();
对于每个TTabsheet。但是,即使DoubleBuffered被激活,这也会在当前选项卡中创建一个“闪烁”。
有什么想法或信息可以避免这个问题吗?
发布于 2015-05-06 16:22:05
在进行更新时,将ScrollBox WM_SETREDRAW消息发送到临时禁用屏幕绘制:
SendMessage(ScrollBox->Handle, WM_SETREDRAW, FALSE, 0);
try {
ScrollBox->DestroyComponents();
DynamicDraw();
}
__finally {
SendMessage(ScrollBox->Handle, WM_SETREDRAW, TRUE, 0);
ScrollBox->Update();
}https://stackoverflow.com/questions/30080041
复制相似问题