学习 Delphi (还有很长的路要走),使用里约。
我知道了如何在TStringGrid
行中使用彩色背景-但看起来我需要在这些行中的数据更改时刷新(以便根据数据更改显示不同的颜色)。
我以为只要将单元格的值设置为它们当时存在的值就会导致刷新,但事实并非如此。我可以肯定地说,它没有-因为我在StringGrid1DrawCell
过程中放置了一个调试断点-而且那个断点没有被命中。
我希望在TStringGrid
中使用的刷新代码如下所示(注意:将S
定义为String
):
S := StringGrid1.Cells[1, i];
StringGrid1.Cells[1, i] := S;
基本假设(仅设置/重置单元格内容的值会导致刷新)是否错误?
如果想法是对的,但方法是错的:您能告诉我该怎么做吗?
1条答案
按热度按时间zy1mlcev1#
仅当需要在屏幕上绘制给定单元格时,才会激发
OnDrawCell
事件。设置特定单元格的值将只使该单元格无效,从而只触发该单元格的重画,而不是单元格的整行或整个网格。
如果需要触发整行的重绘,调用网格的(受保护的)
InvalidateRow()
方法,例如:如果需要触发整个网格的重画,调用网格的(public)
Invalidate()
方法,例如: