没接触过这类问题
  if Query1.FieldByName('结存').AsInteger = 0 then   //判断时cell是否已画出来了?此时更改color是不是迟了?
      DBGrid1.Canvas.Brush.Color := clRed;
  DBGrid1.DefaultDrawDataCell(Rect, Field, State);
         我没试过,猜测…………
                        

解决方案 »

  1.   

      if Query1.FieldByName('结存').AsInteger = 4 then
          DBGrid1.Canvas.Brush.Color := clRed;
      DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      

  2.   

    procedure Twelcome.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    begin
      if (TDBGrid(Sender).DataSource.DataSet.FieldByName('结存').AsInteger = 0) or 
        TDBGrid(Sender).DataSource.DataSet.FieldByName('结存').IsNull then
          TDBGrid(Sender).Canvas.Font.Color := clRed;
      TDBGrid(Sender).DefaultDrawDataCell(Rect, Field, State);
    end;
      

  3.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      if (TDBGrid(Sender).DataSource.DataSet.FieldByName('结存').AsInteger = 0) or
        TDBGrid(Sender).DataSource.DataSet.FieldByName('结存').IsNull then begin
          TDBGrid(Sender).Canvas.Font.Color := clRed;
        TDBGrid(Sender).Canvas.Font.Color := clRed;
        TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
      end;
    end;
      

  4.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      if (TDBGrid(Sender).DataSource.DataSet.FieldByName('单价').AsInteger = 0) or
        TDBGrid(Sender).DataSource.DataSet.FieldByName('单价').IsNull then begin
        TDBGrid(Sender).Canvas.Font.Color := clRed;
        TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
      end;
    end;
      

  5.   

    各位 高手还是显示不出来red呀?
     
      if Query1.FieldByName('结存').AsInteger = 4 then
          DBGrid1.Canvas.Brush.Color := clRed;
      DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);  
    哪个DataCol怎么包错呀
      

  6.   

    大家帮帮我呀
    DataCol说是没有申明
      

  7.   

    DBGrid1DrawDataCell  <> DBGrid1DrawColumnCell
      

  8.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
    //               ~~~~~~~~~~~~~~~~~~~~~
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻
    嘻嘻嘻不就可以了嘻嘻嘻嘻
    嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻