Delphi TStringGrid中的奇数绘图问题(黑色单元格)
我在TStringGrid(Delphi XE)中遇到了一些非常奇怪的事情。我已经看到,有时当我单击网格中的第一行时,它会变成黑色(或者显示从窗体上的其他控件“窃取”的混乱画布)。 只有在特定的配置中,当网格接收到焦点时,才会发生这种情况。单击网格中的另一个区域后,一切看起来都正常,直到焦点移动到另一个TStringGrid 如何复制:Delphi TStringGrid中的奇数绘图问题(黑色单元格),delphi,delphi-xe,tstringgrid,Delphi,Delphi Xe,Tstringgrid,我在TStringGrid(Delphi XE)中遇到了一些非常奇怪的事情。我已经看到,有时当我单击网格中的第一行时,它会变成黑色(或者显示从窗体上的其他控件“窃取”的混乱画布)。 只有在特定的配置中,当网格接收到焦点时,才会发生这种情况。单击网格中的另一个区域后,一切看起来都正常,直到焦点移动到另一个TStringGrid 如何复制: 在窗体上放置两个字符串网格 如下所示设置它们(更新:我意识到goRowSelect和goEditing必须为“true”) 单击一个网格中的第一个单元格->什
- 在窗体上放置两个字符串网格
- 如下所示设置它们(更新:我意识到goRowSelect和goEditing必须为“true”)
- 单击一个网格中的第一个单元格->什么都不发生
- 单击第二个网格中的第一个单元格->第一个单元格变黑(参见屏幕截图)
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
objectgrid1:TStringGrid我也可以重现您在XE3中遇到的问题。我将ParentDoubleBuffered
重置为True
后,问题就消失了
一般来说,当我在控件中看到奇数黑色矩形时,我将首先检查ParentDoubleBuffered
设置。我看到您为两个网格启用了双缓冲。你有什么特别的理由这么做吗?如果您想避免在调整大小或单元更新过程中闪烁,这是很有帮助的。我也可以重现您在XE3方面的问题。我将ParentDoubleBuffered
重置为True
后,问题就消失了
一般来说,当我在控件中看到奇数黑色矩形时,我将首先检查ParentDoubleBuffered
设置。我看到您为两个网格启用了双缓冲。你有什么特别的理由这么做吗?如果您想避免在调整大小或单元更新过程中闪烁,这是很有帮助的。我也可以重现您在XE3方面的问题。我将ParentDoubleBuffered
重置为True
后,问题就消失了
一般来说,当我在控件中看到奇数黑色矩形时,我将首先检查ParentDoubleBuffered
设置。我看到您为两个网格启用了双缓冲。你有什么特别的理由这么做吗?如果您想避免在调整大小或单元更新过程中闪烁,这是很有帮助的。我也可以重现您在XE3方面的问题。我将ParentDoubleBuffered
重置为True
后,问题就消失了
一般来说,当我在控件中看到奇数黑色矩形时,我将首先检查ParentDoubleBuffered
设置。我看到您为两个网格启用了双缓冲。你有什么特别的理由这么做吗?如果您想避免在调整大小或更新单元格时出现闪烁,这会很有帮助。我可以用给定的信息复制它。我花了2个小时来跟踪它。我认为这在我的定制TStringGrid库(特别是“Draw”方法)中是个问题。@SertacAkyuz哪个Delphi?使用XE。XE2似乎不会出现这种情况。选项goEditing
和goRowSelect
是互斥的。如果您选择了整行,您将如何编辑网格?我可以用给定的信息复制它。我花了2个小时来跟踪。我认为这在我的定制TStringGrid库(特别是“Draw”方法)中是个问题。@SertacAkyuz哪个Delphi?使用XE。XE2似乎不会出现这种情况。选项goEditing
和goRowSelect
是互斥的。如果您选择了整行,您将如何编辑网格?我可以用给定的信息复制它。我花了2个小时来跟踪。我认为这在我的定制TStringGrid库(特别是“Draw”方法)中是个问题。@SertacAkyuz哪个Delphi?使用XE。XE2似乎不会出现这种情况。选项goEditing
和goRowSelect
是互斥的。如果您选择了整行,您将如何编辑网格?我可以用给定的信息复制它。我花了2个小时来跟踪。我认为这在我的定制TStringGrid库(特别是“Draw”方法)中是个问题。@SertacAkyuz哪个Delphi?使用XE。XE2似乎不会出现这种情况。选项goEditing
和goRowSelect
是互斥的。如果选择了整行,您将如何编辑网格?设置ParentDoubleBuffered将覆盖DoubleBuffered(更确切地说,网格将使用父级的DoubleBuffered)。因此,如果将ParentDoubleBuffered设置为true,但不告诉我们父项的DoubleBuffered值是多少,这是毫无意义的。我们只能猜测父母的双重缓冲是错误的(因为事情发生了变化)。很高兴在延迟两年后听到你的回复;-)我记不起确切的原因了。我想我的观点是表单实际上已经将双缓冲
设置为真
。没有必要将所有内容设置为双缓冲。“没有必要将所有内容设置为双缓冲”-这是个人观点还是可以解释的?我认为Borland把这个属性放在那里是有目的的……所以,基本上你的意思是这是一个Delphi bug(‘未记录的特性’:))。只有禁用双缓冲?设置ParentDoubleBuffered将覆盖DoubleBuffered(更确切地说,网格将使用父级的DoubleBuffered),才能解决此问题。因此,如果将ParentDoubleBuffered设置为true,但不告诉我们父项的DoubleBuffered值是多少,这是毫无意义的。我们只能猜测父母的双重缓冲是错误的(因为事情发生了变化)。很高兴在延迟两年后听到你的回复;-)我记不起确切的原因了。我想我的观点是表单实际上已经将双缓冲
设置为真
。没有必要将所有内容设置为双缓冲。“没有必要将所有内容设置为双缓冲”-这是个人观点还是可以解释的?我以为