我在使用TStringGrid(Delphi XE)时遇到了一些非常奇怪的东西。我已经看到,有时当我点击网格中的第一行时,它会变黑(或显示乱码画布'被盗的'来自其他形式的控件)。 当网格获得焦点时,它仅在某些配置中发生。一旦你点击网格中的另一个区域,一切都看起来没问题,直到焦点移动到另一个TStringGrid。
如何重现:
问题也出现在其他情况下(不需要在表单上有2个网格),但只有当我有2个网格时才设法重现它。
object grid1: TStringGrid <------- same for Grid2
Left = 2
Top = 8
Width = 422
Height = 381
BevelEdges = [beLeft, beTop]
DefaultColWidth = 80
DefaultRowHeight = 15
DoubleBuffered = True
FixedCols = 0
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goDrawFocusSelected, goColSizing, goEditing, goRowSelect, goFixedHotTrack]
ParentDoubleBuffered = False
TabOrder = 1
end
有关如何解决此问题的任何想法?
答案 0 :(得分:3)
我也可以用XE3重现你的问题。将ParentDoubleBuffered
重置为True
后,问题就消失了。
一般来说,当我在控件中看到奇怪的黑色矩形时,我将首先检查ParentDoubleBuffered
设置。我看到你为这两个网格启用了双缓冲。你有什么特别的理由吗?如果您打算在调整大小或单元格更新期间避免闪烁,则some techniques会有所帮助。