0

我在 TStringGrid (Delphi XE) 中遇到了一些非常非常奇怪的事情。我已经看到,有时当我单击网格中的第一行时,它会变成黑色(或显示从表单上的其他控件“窃取”的乱码画布)。它仅在某些配置中发生,当网格获得焦点时。单击网格中的另一个区域后,一切看起来都很好,直到焦点移动到另一个 TStringGrid。

如何重现:

  • 将两个字符串网格放在一个表格上
  • 如下所示设置它们(更新:我意识到 goRowSelect 和 goEditing 必须是'true')
  • 单击一个网格中的第一个单元格-> 没有任何反应
  • 单击第二个网格中的第一个单元格->第一个单元格变黑(见截图)

该问题也出现在其他情况下(不必在表单上有 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

关于如何解决这个问题的任何想法?

在此处输入图像描述

4

1 回答 1

3

我也可以用 XE3 重现您的问题。在我重置ParentDoubleBuffered为之后True,问题就消失了。

一般来说,当我在控件中看到奇怪的黑色矩形时,我会首先检查ParentDoubleBuffered设置。我看到您为两个网格启用了双缓冲。你有什么特别的理由这样做吗?如果您打算在调整大小或单元格更新期间避免闪烁,有一些技巧很有帮助。

于 2014-06-11T16:12:54.440 回答