就是我现在只想把单元格的颜色改变,下面代码是把整行的颜色都修改了,请问应该怎么修改呢?
procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);
 var
  CTime:STRING;
  GTime:STRING;
begin
CTime:='09:10';
GTime:='17:30';
if adoQuery1.FieldByName('ComeTime').AsString >= CTime then
      DBGridEh1.canvas.Font.color:=clred;
if adoQuery1.FieldByName('ComeTime').AsString = '' then
      DBGridEh1.canvas.Font.color:=clred;
if adoQuery1.FieldByName('GoTime').AsString <= GTime then
      DBGridEh1.Canvas.Font.Color:=clBLUE;
if adoQuery1.FieldByName('GoTime').AsString = '' then
      DBGridEh1.Canvas.Font.Color:=clBLUE;
DBGridEh1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;

解决方案 »

  1.   

    if LowerCase(Column.FieldName) ='cometime' then
      DBGridEh1.DefaultDrawColumnCell(Rect,DataCol,Column,State); 
      

  2.   

    procedure TFrmFerry.DBGridEh1GetCellParams(Sender: TObject;
      Column: TColumnEh; AFont: TFont; var Background: TColor;
      State: TGridDrawState);
    begin
      if Voyages.RecordCount<=0 then Exit;  if column.FieldName='VoyStatus' then
        begin
          if DBGridEh1.Fields[column.Index].AsString='D' then
            Background:=clRed
          else if DBGridEh1.Fields[column.Index].AsString='T' then
            Background:=clYellow
          else
            Background:=clGreen
        end
      else  if column.FieldName='V_ShipId' then
        begin
          AFont.Color :=clWhite;
          RzColorPicker1.SelColorIndex := Voyages.Fieldbyname('ShipId').AsInteger;
          Background :=RzColorPicker1.SelectedColor;
        end
      else if column.FieldName='V_CompanyName' then
        begin
          if Trim(Voyages.Fieldbyname('V_Company').AsString)='' then Exit;
          AFont.Color :=clWhite;
          RzColorPicker1.SelColorIndex := Voyages.Fieldbyname('V_Company').AsInteger;
          Background :=RzColorPicker1.SelectedColor;
        end
      else if column.FieldName='V_RouteId' then
        begin
          if  Trim(Voyages.Fieldbyname('RouteId').AsString)='' then Exit;
          AFont.Color :=clWhite;
          RzColorPicker1.SelColorIndex := Voyages.Fieldbyname('RouteId').AsInteger;
          Background :=RzColorPicker1.SelectedColor;
        end
      {else if column.FieldName='V_Entrances' then
        begin
          if  Trim(Voyages.Fieldbyname('EntranceId').AsString)='' then Exit;
          AFont.Color :=clWhite;
          RzColorPicker1.SelColorIndex := Voyages.Fieldbyname('EntranceId').AsInteger;
          Background :=RzColorPicker1.SelectedColor;
        end }
    end;