procedure TDbgridForm.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin with DBGrid1 do begin if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then begin Canvas.Font.Color :=ClYellow; Canvas.Brush.Color :=ClNavy; end else begin if DataSource1.DataSet.RecNo mod 2<>0 then {判断当前数据是奇数还是偶数行} Canvas.brush.Color :=ClWhite {如果是奇数行,DBGrid背景以白色显示} else Canvas.brush.Color :=clgreen; //$00EAEAEA; {如果是偶数行,DBGrid背景以浅灰色显示} end; DefaultDrawColumnCell(Rect, DataCol, Column, State); {这行很关键的,一定不要遗漏了} end; end;
redhf(农民的儿子) 别卖官司了把代码贴出来 共享一下 study
procedure Tfrm_khxsbb.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); begin if field.Asstring='总计' then DBGrid1.Canvas.Font.Color := clRed else if pos('合计',field.Asstring)>0 then DBGrid1.Canvas.Font.Color := clBlue else DBGrid1.Canvas.Font.Color := clBlack; setbkcolor(DBGrid1.canvas.handle,clwhite); DBGrid1.Canvas.TextRect(rect,0,0,field.AsString); DBGrid1.Canvas.Textout(rect.Left,rect.Top,field.AsString);end;
这怎么写....
如果是这样可能需要改写dbgrid控件!我做过这种事,当时就是改控件的!
)行显示不同的颜色,谁有这方面的代码,请发至[email protected],一定给分!
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
with DBGrid1 do
begin
if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then
begin
Canvas.Font.Color :=ClYellow;
Canvas.Brush.Color :=ClNavy;
end
else
begin
if DataSource1.DataSet.RecNo mod 2<>0 then {判断当前数据是奇数还是偶数行}
Canvas.brush.Color :=ClWhite {如果是奇数行,DBGrid背景以白色显示}
else
Canvas.brush.Color :=clgreen; //$00EAEAEA; {如果是偶数行,DBGrid背景以浅灰色显示}
end;
DefaultDrawColumnCell(Rect, DataCol, Column, State); {这行很关键的,一定不要遗漏了}
end;
end;
study
const Rect: TRect; Field: TField; State: TGridDrawState);
begin
if field.Asstring='总计' then DBGrid1.Canvas.Font.Color := clRed
else
if pos('合计',field.Asstring)>0 then
DBGrid1.Canvas.Font.Color := clBlue
else
DBGrid1.Canvas.Font.Color := clBlack;
setbkcolor(DBGrid1.canvas.handle,clwhite);
DBGrid1.Canvas.TextRect(rect,0,0,field.AsString);
DBGrid1.Canvas.Textout(rect.Left,rect.Top,field.AsString);end;