例子,自己修改一下首先将DBgrid的DefaultDrawing属性设置为false;
然后在DBBrid的DrawColumnCell事件中这样做:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Column.Field.AsInteger < 75 then begin
DBGrid1.Canvas.Font.Color := clWhite;
DBGrid1.Canvas.Brush.Color := clRed; //这里设置单元格填充色
DBGrid1.Canvas.FillRect(Rect); //这里对相应的单元格进行北景色填充
end;
//输出内容
DBGrid1.Canvas.TextRect( Rect, Rect.Left, Rect.Top, Column.Field.AsString);
end;
然后在DBBrid的DrawColumnCell事件中这样做:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Column.Field.AsInteger < 75 then begin
DBGrid1.Canvas.Font.Color := clWhite;
DBGrid1.Canvas.Brush.Color := clRed; //这里设置单元格填充色
DBGrid1.Canvas.FillRect(Rect); //这里对相应的单元格进行北景色填充
end;
//输出内容
DBGrid1.Canvas.TextRect( Rect, Rect.Left, Rect.Top, Column.Field.AsString);
end;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if dbgrid1.DataSource.DataSet.RecNo mod 2=0 then
dbgrid1.canvas.Brush.color:=$00BFE4E2 else
dbgrid1.canvas.brush.color:=$00E3FBFB;
dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);end;速达的界面
另d6+win2000通过
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (Table1.Recno mod 2) <> 0 then begin
DBGrid1.Canvas.Font.Color := clWhite;
DBGrid1.Canvas.Brush.Color := clRed; //这里设置单元格填充色
DBGrid1.Canvas.FillRect(Rect); //这里对相应的单元格进行北景色填充
end;
//输出内容
DBGrid1.Canvas.TextRect( Rect, Rect.Left, Rect.Top, Column.Field.AsString);
end;
嘻嘻嘻小小修整嘻嘻嘻嘻
嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Odd(Column.Index) then begin
TDBGrid(Sender).Canvas.Font.Color := clWhite;
TDBGrid(Sender).Canvas.Brush.Color := clRed; //这里设置单元格填充色
TDBGrid(Sender).Canvas.FillRect(Rect); //这里对相应的单元格进行北景色填充
TDBGrid(Sender).Canvas.TextRect(Rect, Rect.Left, Rect.Top, Column.Field.AsString);
end;
end;
To zswang:你的是列,而不是行哦。要隔行哦。
你的数据库是不是sql server的,它不支持recno,因此判断条件肯定是正确
DataSet for SQL Server非编辑态是支持的
嘻嘻嘻测试成功嘻嘻嘻嘻
嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if not Odd(TDBGrid(Sender).DataSource.DataSet.RecNo) then begin
TDBGrid(Sender).Canvas.Brush.Color := clSkyBlue;
TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
for SQL Server7.0/2000
for Paradox7
试了你的颜色不同可以实现, 但是非clSkyBlue色的那行就没有数据显示了,怎么办?
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if not Odd(TDBGrid(Sender).DataSource.DataSet.RecNo) then begin
TDBGrid(Sender).Canvas.Brush.Color := clSkyBlue;
TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end else
TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
for Access2000 俺的access返回的reno总是-1
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if dbgrid1.datasource.dataset.recno mod 2= 0 then
begin
dbgrid1.Canvas.Brush.Color :=clyellow;
dbgrid1.Canvas.font.Color :=clwindowtext;
end
else
begin
dbgrid1.Canvas.Brush.Color :=clinfobk;
dbgrid1.Canvas.font.color:=clred;
end;
dbgrid1.Canvas.Brush.Style:=bssolid;
dbgrid1.canvas.fillrect(rect);
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;还是那句话,要是不行,你扁我!