Delphi TStringGrid 闪烁

发布于 2024-09-18 18:42:59 字数 143 浏览 5 评论 0原文

我正在运行时从 CSV 文件向字符串网格添加多行,但是 StringGrid 在更新时似乎会闪烁很多,我认为会有一个 beginupadate / Endupdate 命令来停止此操作。但是我找不到它。有没有其他方法可以在更新网格 ID 时停止闪烁。

科林

I am adding multiple rows to a string grid from a CSV file @ runtime, However the StringGrid seems to flicker lots when it is being upadated, I presumed there would be a beginupadate / Endupdate command to stop this. However I cannot find it. Is there another way to stop the flicker when the grid id being updated.

Colin

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

庆幸我还是我 2024-09-25 18:42:59

迟到总比不到好……
我使用 WM_SETREDRAW。例如:

...
StringGrid1.Perform(WM_SETREDRAW, 0, 0);
try
  // StringGrid1 is populated with the data here 
finally
  StringGrid1.Perform(WM_SETREDRAW, 1, 0);
  StringGrid1.Invalidate; // important! to force repaint after all
end;
...

Better late than never...
I use WM_SETREDRAW. For example:

...
StringGrid1.Perform(WM_SETREDRAW, 0, 0);
try
  // StringGrid1 is populated with the data here 
finally
  StringGrid1.Perform(WM_SETREDRAW, 1, 0);
  StringGrid1.Invalidate; // important! to force repaint after all
end;
...
凯凯我们等你回来 2024-09-25 18:42:59

是的,TStringgrid 中没有 BeginUpdate/EndUpdate,但每行或每列都有:

StringGrid1.Rows[0].BeginUpdate;
StringGrid1.Cols[0].BeginUpdate;

Yes, there is no BeginUpdate/EndUpdate in TStringgrid, but there is per row or per col:

StringGrid1.Rows[0].BeginUpdate;
StringGrid1.Cols[0].BeginUpdate;

海未深 2024-09-25 18:42:59


These are methods of the `TStrings` object.

Use

StringGrid1.Rows[i]/Cols[i].BeginUpdate;
...
StringGrid1.Rows[i]/Cols[i].EndUpdate;

更新

您是否尝试设置DoubleBuffered := true


These are methods of the `TStrings` object.

Use

StringGrid1.Rows[i]/Cols[i].BeginUpdate;
...
StringGrid1.Rows[i]/Cols[i].EndUpdate;

Update

Have you tried to set DoubleBuffered := true?

游魂 2024-09-25 18:42:59

您可以使用 Windows 函数 LockWindowUpdate(AHandle) 来阻止控件的刷新,然后使用 LockWindowUpdate(0) 来重新绘制它。

当句柄传递 Grid.Handle 时。

You can use the Windows function LockWindowUpdate(AHandle) to prevent the refresh of the control and then LockWindowUpdate(0) to repaint it.

As the handle pass the Grid.Handle.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文