ado_two 为dbgrid 数据集的数据源 注:在dbgrid1 的DrawColumnCell 事件中 以下为: if (ado_two.RecNo mod 2)=1 then begin dbgrid1.Canvas.Brush.Color:=$00D9F3EB; dbgrid1.Canvas.Font.Color:= clDefault; end else begin dbgrid1.Canvas.Brush.Color:=clBtnHighlight; dbgrid1.Canvas.Font.Color:= clDefault; end; if gdselected in state then begin dbgrid1.Canvas.Brush.Color:=clDefault; dbgrid1.Canvas.Font.Color:= clwhite; end; dbgrid1.Canvas.FillRect(Rect); dbgrid1.Canvas.TextOut(Rect.Left+6,Rect.Top+2,Trim(Column.Field.AsString));
DBGrid的OnDrawColumnCell事件中if AdoQuery1.RecNo mod 2 = 0 then (Sender as TDBGrid).Canvas.Brush.Color := clCream //放入你想要的颜色号 else (Sender as TDBGrid).Canvas.Brush.Color := RGB(221, 255, 255); //放入你想要的颜色号 DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
设置ONDRAWDATACELL事件 procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); Var COORD:TGridCoord; begin COORD:=MouseCoord(Rect.Left+1,Rect.Top+1); IF COORD.Y MOD 2 =0 THEN BEGIN CANVAS.BRUSH.COLOR:=CLWHITE; END ELSE CANVAS.BRUSH.COLOR:=CLGRAY; CANVAS.FILLRECT(RECT); CANVAS.TEXTRECT(RECT,RECT.LEFT+2,RECT.TOP+2,FIELD.ASSTRING) end;
呵呵,不好意思,上面我发的回复是抄别人的代码,不知道为什么不好用.只好自己写了一段. procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if DBGrid1.DataSource.DataSet.RecNo mod 2=0 then DBGrid1.Canvas.Brush.Color:=clRed; DBGrid1.DefaultDrawDataCell(Rect,Column.Field,State); end;
TMyCustomDBGrid = class(TCustomDBGrid); procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
sCjts,sQjTs:String;
begin
with TMyCustomerDBGrid(Sender) do
begin
Cjts:=DataLink.Fields[5].AsString;
sQjts:=DataLink.Fields[9].AsString;
if sCjts<>‘‘ then //春季退书数量>0的用红色显示
Canvas.Brush.Color := clRed
else
if sQjts<>‘‘ then //秋季退书数量>0的用黄色显示
Canvas.Brush.Color := clYellow
else
Canvas.Brush.Color:=clWhite;
Canvas.Font.Color:=clBlack;
canvas.fillrect(rect);
canvas.textout(rect.left+4,rect.top+4,Column.Field.AsString);
end;
end; 由此方法可以延伸出其它控件的多种修饰方法,比如可以按数据项值采用不同的颜色,可以按记录号显示不同的颜色。总之,灵活应用canvas、rect及bitmap等对象,可以将各种网格装饰得绚丽多彩。
在DbGrid的DrawColumnCell事件中编写如下代码:
Case DataCol Mod 2 = 0 of
True: DbGrid1.Canvas.Brush.Color:= clWhite; file://偶数列用白色
False: DbGrid1.Canvas.Brush.Color:= clAqua; file://奇数列用浅绿色
End;
DbGrid1.Canvas.Pen.Mode:=pmMask;
DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);
注:在dbgrid1 的DrawColumnCell 事件中
以下为:
if (ado_two.RecNo mod 2)=1 then
begin
dbgrid1.Canvas.Brush.Color:=$00D9F3EB;
dbgrid1.Canvas.Font.Color:= clDefault;
end else
begin
dbgrid1.Canvas.Brush.Color:=clBtnHighlight;
dbgrid1.Canvas.Font.Color:= clDefault;
end;
if gdselected in state then
begin
dbgrid1.Canvas.Brush.Color:=clDefault;
dbgrid1.Canvas.Font.Color:= clwhite;
end;
dbgrid1.Canvas.FillRect(Rect);
dbgrid1.Canvas.TextOut(Rect.Left+6,Rect.Top+2,Trim(Column.Field.AsString));
(Sender as TDBGrid).Canvas.Brush.Color := clCream //放入你想要的颜色号
else
(Sender as TDBGrid).Canvas.Brush.Color := RGB(221, 255, 255); //放入你想要的颜色号
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
Var COORD:TGridCoord;
begin
COORD:=MouseCoord(Rect.Left+1,Rect.Top+1);
IF COORD.Y MOD 2 =0 THEN
BEGIN
CANVAS.BRUSH.COLOR:=CLWHITE;
END
ELSE
CANVAS.BRUSH.COLOR:=CLGRAY;
CANVAS.FILLRECT(RECT);
CANVAS.TEXTRECT(RECT,RECT.LEFT+2,RECT.TOP+2,FIELD.ASSTRING)
end;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if DBGrid1.DataSource.DataSet.RecNo mod 2=0 then
DBGrid1.Canvas.Brush.Color:=clRed;
DBGrid1.DefaultDrawDataCell(Rect,Column.Field,State);
end;