我怎样才能使我的所有网格在我的表单中看起来都一样?我想实现必须应用于我项目的所有网格的备用行颜色。是否可以不为每个网格添加相同的 DrawColumnCell 事件代码?我想避免为每个网格添加相同的代码。我的项目中有 30 个网格,乘以 13 行代码,它只是为我的项目添加了很多代码行,使其“不友好”。我正在寻找一种解决方案,它只会在项目中添加 13 行代码,而不是 390 行。
我的格式化代码如下所示(例如):
procedure TDBGrid.DBGrid1DrawColumnCell(Sender: TObject;const Rect: TRect;DataCol: Integer;Column: TColumn;State: TGridDrawState) ;
var
grid : TDBGrid;
row : integer;
begin
grid := sender as TDBGrid;
row := grid.DataSource.DataSet.RecNo;
if Odd(row) then
grid.Canvas.Brush.Color := clSilver
else
grid.Canvas.Brush.Color := clDkGray;
grid.DefaultDrawColumnCell(Rect, DataCol, Column, State) ;
end;
可能我需要以某种方式扩展 DBGrid,但我不知道如何或如何在谷歌上寻找解决方案
我试图破解每个表单中的 DBGRid,如下所示:
type
TDBGrid = class(DBGrids.TDBGrid)
protected
procedure DrawColumnCell(const Rect: TRect; DataCol: Integer;Column: TColumn; State: TGridDrawState); override;
end;
...
procedure TDBGrid.DrawColumnCell(const Rect: TRect; DataCol: Integer;Column: TColumn; State: TGridDrawState) ;
var
grid : TDBGrid;
row : integer;
begin
row := 2;//grid.DataSource.DataSet.RecNo;
if Odd(row) then
Canvas.Brush.Color := clSilver
else
Canvas.Brush.Color := clDkGray;
DefaultDrawColumnCell(Rect, DataCol, Column, State) ;
end;
我可以这样做,但我无法访问发件人,因此我可以访问数据集并知道要着色的记录和不着色的记录(奇数和偶数)。无论如何,这是一种糟糕的方法,因为我必须在每种形式上都这样做,所以这不是一个真正的解决方案
有任何想法吗?
谢谢