procedure TForm19.DBGridEh6DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
var n:integer;
  begin
   if adoquery13.FieldByName(‘speed').AsInteger>=70 then
    begin
       dbgrideh6.Canvas.Brush.Color:=clblue;
       DBGridEh6.DefaultDrawColumnCell(Rect,DataCol,Column,State);//这句出错
  end;
end;
delphi中提示的错误是[DCC Error] Unit19.pas(1486): E2010 Incompatible types: 'DBGridEh.TGridDrawState' and 'Unit19.TGridDrawState'
哪位高手给看下

解决方案 »

  1.   

    试了下应该是这个写错了。
    if adoquery13.FieldByName(‘speed').AsInteger>=70 then
    --> 
    if adoquery1.FieldByName('speed').AsInteger>=70 then
      

  2.   

    或者是
    procedure TForm19.DBGridEh6DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
    var n:integer;
      begin
       if adoquery13.FieldByName('速度').AsInteger>=70 then
        begin      dbgrideh6.Canvas.Font.Color:=clblack;
          dbgrideh6.Canvas.Brush.Color:=clskyblue;
          DBGrideh6.Canvas.FillRect(rect);
       // DBGridEh6.DefaultDrawColumnCell(Rect,DataCol,Column,State);  end;
    没出错,但是dbgrideh中那一列全部是蓝色的了,字都看不到了怎么办?要是不写DBGrideh6.Canvas.FillRect(rect);
    颜色又不会变化了
    end;
      

  3.   

    dbgrideh6.Canvas.Font.Color:=clblack;
      dbgrideh6.Canvas.Brush.Color:=clwhite;
    应该是clskyblue和clblack颜色区分不大所致
      

  4.   

    还是不行啊,dbgrideh6.Canvas.Font.Color:=clblack;
      dbgrideh6.Canvas.Brush.Color:=clwhite;
    这样设置后,dbgrideh中就是白色的,设置为其他颜色也是一样的。像没有记录一样的,其实鼠标单击下数据还是有的,但是看起来就是白色的,没有字这是怎么回事?
      

  5.   

    dbgrideh6.Canvas.Brush.Color:=clwhite;
    dbgrideh6.Canvas.Font.Color:=clblack;放到下面试试。
      

  6.   

    看看interface下面的uses,是不是引用了DBGrids单元,那是加入DBGrid的时候引入的,把他去掉;
    窗体上有DBGrid控件,也去掉因为DBGrids单元也有DefaultDrawColumnCell方法,重名了;但与DBGridEhs中的方法参数不同
    默认的调用DBGrids中的,你这里要调用的是DBGridEhs中的方法,所以编译不通过,去掉就行了,,,,