//改变颜色。 procedure TF_Query.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var I : Integer; begin if Pos('未签收',F_Data.Query_Query.FieldByName('Flag').AsString)<>0 then begin DBGrid1.Canvas.Font.Color := clblue;//改变字体的颜色 DBGrid1.DefaultDrawColumnCell(Rect, datacol,column, State); end; if F_Data.Query_Query.FieldByName('Printed').AsString='1' then begin DBGrid1.Canvas.Brush.Color := clSkyBlue;//改变背景的颜色 DBGrid1.DefaultDrawColumnCell(Rect, datacol,column, State); {end else begin DBGrid1.Canvas.Brush.Color := clInfoBk; DBGrid1.DefaultDrawColumnCell(Rect, datacol,column, State);} end; if CheckBox1.Checked then begin if Print_Select.Count<>0 then begin for I:=0 to Print_Select.Count-1 do begin if Print_Select.Strings[I]=F_Data.Query_Query.FieldByName('Flow_ID').AsString then begin DBGrid1.Canvas.Brush.Color := clGray; DBGrid1.DefaultDrawColumnCell(Rect, datacol,column, State); Exit; end; end; end; end; end;
procedure TF_Query.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var I : Integer;
begin
if Pos('未签收',F_Data.Query_Query.FieldByName('Flag').AsString)<>0 then
begin
DBGrid1.Canvas.Font.Color := clblue;//改变字体的颜色
DBGrid1.DefaultDrawColumnCell(Rect, datacol,column, State);
end;
if F_Data.Query_Query.FieldByName('Printed').AsString='1' then
begin
DBGrid1.Canvas.Brush.Color := clSkyBlue;//改变背景的颜色
DBGrid1.DefaultDrawColumnCell(Rect, datacol,column, State);
{end
else
begin
DBGrid1.Canvas.Brush.Color := clInfoBk;
DBGrid1.DefaultDrawColumnCell(Rect, datacol,column, State);}
end;
if CheckBox1.Checked then
begin
if Print_Select.Count<>0 then
begin
for I:=0 to Print_Select.Count-1 do
begin
if Print_Select.Strings[I]=F_Data.Query_Query.FieldByName('Flow_ID').AsString then
begin
DBGrid1.Canvas.Brush.Color := clGray;
DBGrid1.DefaultDrawColumnCell(Rect, datacol,column, State);
Exit;
end;
end;
end;
end;
end;
打开DBGrid字段管理器-》选中要改变颜色的某个字段-》属性栏-》color改变一下,哈哈,ok搞定!
自己画吧
用ehlib中的dbgrideh好些
DataCol: Integer; Column: TColumn;State: TGridDrawState;
singlecolor:TColor;doublecolor:TColor;selectedcolor:TColor);
var
dataset:tdataset;
dbgrid:tdbgrid;
begin
dataset:=TDBGrid(Sender).DataSource.DataSet;
dbgrid:=TDBGrid(Sender);
if (dataset.Recno mod 2) <> 0 then //隔行
begin
dbgrid.Canvas.Font.Color := clBlack;
dbgrid.Canvas.Brush.Color := singlecolor; //这里设置单元格填充色
dbgrid.Canvas.FillRect(Rect); //这里对相应的单元格进行背景色填充
end
else
begin
dbgrid.Canvas.Font.Color := clBlack;
dbgrid.Canvas.Brush.Color :=doublecolor;
dbgrid.Canvas.FillRect(Rect);
end; //输出内容
dbgrid.Canvas.TextRect( Rect, Rect.Left, Rect.Top, Column.Field.DisplayText);
if gdSelected in State then //被选中行的颜色
begin
dbgrid.Canvas.Font.Color := clBlack;
dbgrid.Canvas.Brush.Color :=selectedcolor;
dbgrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;