2010-08-19 59 views
1

我有固定行的TDrawGrid这个问题(虽然同样适用于固定列)。当我没有非固定行时,如何阻止TDrawGrid固定行消失?

如果您有.Fi​​xedRows = 1,并减少.RowCount的值,当它变为1时,.FixedRows会自动设置为0,并且您的固定行将变为白色而不是通常的灰色 - 除了列零。

我可以阻止这种情况发生吗?这是TDrawGrid中的错误吗?

我意识到我可以在OnDrawCell中添加一些代码来检查rowcount,并在必要时为它绘制一些假的固定行,但我希望不必这样做。

谢谢大家。

回答

1

作为设计成在VCL码,它是一个“功能” :-):

procedure TCustomGrid.SetRowCount(Value: Longint); 
begin 
    if FRowCount <> Value then 
    begin 
    if Value < 1 then Value := 1; 
    if Value <= FixedRows then FixedRows := Value - 1; // <= **@#$#@#$** 
    ChangeSize(ColCount, Value); 
    end; 
end; 
+0

,这是一个私有的,非虚拟方法(在D6至少),所以它不能容易地重写。 – 2010-08-19 20:39:06

+0

...仍然在D2010! – 2010-08-19 21:01:51

+0

感谢男性,这看起来很有希望。我只是使用了一个直接的TDrawGrid ...现在我得到了一个TCustomGrid,并且只覆盖了DrawCell,并添加了上面的proc。它抱怨FRowCount和ChangeSize。有任何提示?我是一个小白菜...... – csharpdefector 2010-08-19 21:33:36