DBGrid如何显示、更改其中的图形?stringgrid的ondrawcell事件?(100分)

  • 主题发起人 主题发起人 NoCC
  • 开始时间 开始时间
N

NoCC

Unregistered / Unconfirmed
GUEST, unregistred user!
问题:在网格中显示图形,并且在程序运行过程中动态更新。
我用stringgrid的ondrawcell事件,但在显示和刷新、重绘时
stringgrid的cell[0,0]不断闪烁,特别网格的行和列数较多时
(我的是20左右),重绘重现时显得速度很慢,cell[0,0]频繁
闪烁,有时还会在cell[0,0]中出现没有赋过的值(用textout等)
和图标(用Imagelist.Draw绘制图形),如何解决?
 
可以试试设定canvas的裁剪区域cliprect,区域之外的刷新
被忽略.selectregion,invalidaterect()...
TCustomGrid的源码中就是这样的.
 
我用的就是invalidaterect,在行和列只有5左右时(程序另一个地方)所述情况没有,行和列多时就不行,真是烦人!在不同窗体切换时,每次重显,stringgrid[0,0]就疯狂闪烁。
 
不需要重画时,将DefaultDrawing设为False。
 
可不可以考虑在独立的一个canvas(或直接另一个image)中绘制
图形,然后再到grid上CopyRect。
网格中显示的图形是从哪里来得,根据grid中的数据自定义吗?
如说清楚一些,或者有其他简单的方法。
 
g622:
网格中显示的图形是根据grid中的数据自定义的,并且支持动态修改。我的想法是以图形的方式显示grid中固定列和固定行元素之间的关系(特殊图形符号,颜色不尽相同),并且在双击单元时出现浮动小grid,从中选取相应项以修改单元显示内容。不知我表达是否清楚。望不吝赐教。
 
可以在绘制的时候用以下函数将屏幕锁住,阻止它闪动:
LockWindowUpdate(Form1.Handle);
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
767
DelphiTeacher的专栏
D
D
回复
0
查看
809
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
777
DelphiTeacher的专栏
D
后退
顶部