if adoquery.FieldByName('as').asstring=edit1.text then
  begin
    DBGrideh1.Canvas.Font.Color := clred;
    DBGrideh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end
  else
  begin
    DBGrideh1.Canvas.Font.Color := clblue;
    DBGrideh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;
这样写DBGrideh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);报错,因为对DBGRIDEH1不熟悉,我用DBGRID照般过来的.请叫了

解决方案 »

  1.   

    这是用单选按钮控制记录的颜色的代码,看看能不能用上
    procedure TfrmCYSQ.DBGrid1GetCellParams(Sender: TObject; Column: TColumnEh;
      AFont: TFont; var Background: TColor; State: TGridDrawState);
    begin
      if ds.DataSet.FieldByName('SPZT').AsString = '待审批' then
      begin
        Background := DSHP_COLOR;
      end else
      if ds.DataSet.FieldByName('SPZT').AsString = '已审批' then
      begin
        Background := YSHP_COLOR;
      end else
      if ds.DataSet.FieldByName('SPZT').AsString = '未审批' then
      begin
        Background := WSHP_COLOR;
      end;
    end;
    就是凡是审批状态字段的值为"已审批"或"未审批"或"待审批"的时候,显示的颜色不同。
      

  2.   

    DBGrideh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    写在在判断之后就可以了;怎用上了两句呀;