procedure TForm1.DBGridEh1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
if adoQuery1.FieldByName('ComeTime').AsString >= '09:10' then
      DBGridEh1.canvas.Font.color:=clred;
if adoQuery1.FieldByName('GoTime').AsString <= '17:30' then
      DBGridEh1.Canvas.Font.Color:=clGreen;
      DBGridEh1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
红色错误,提示:[Error] Unit1.pas(146): Undeclared identifier: 'DataCol'

解决方案 »

  1.   

    procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumnEh;
      State: TGridDrawState);
    begin
      if oraQuery1.FieldByName('b').AsString ='d' then
            DBGridEh1.canvas.Font.color:=clred
      else
            DBGridEh1.Canvas.Font.Color:=clGreen;
      DBGridEh1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
    end;是这个事件DrawColumnCell
      

  2.   

    如果用DrawDataCell这个事件,得这么写procedure TForm1.DBGridEh1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    begin
      if oraQuery1.FieldByName('b').AsString ='d' then
            DBGridEh1.canvas.Font.color:=clred
      else
            DBGridEh1.Canvas.Font.Color:=clGreen;
      DBGridEh1.DefaultDrawDataCell(Rect,Field,State);
    end;
      

  3.   

    调试通过了,但是没有显示相应的颜色,代码如下:和上面大哥的代码好像不一样。
    procedure TForm1.DBGridEh1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    begin
    if adoQuery1.FieldByName('ComeTime').AsString >= '09:10' then
          DBGridEh1.canvas.Font.color:=clred;
    if adoQuery1.FieldByName('GoTime').AsString <= '17:30' then
          DBGridEh1.Canvas.Font.Color:=clGreen;
    DBGridEh1.DefaultDrawDataCell(Rect,Field,State);
    end;
      

  4.   

    这是因为你的
    adoQuery1.FieldByName('ComeTime').AsString >= '09:10'比较的问题
    检查一下不行用strtotime转换一下再比较
      

  5.   

    还是不变,啥子原因喃??大哥再帮忙看看!!
    procedure TForm1.DBGridEh1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; 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('GoTime').AsString <= GTime then
          DBGridEh1.Canvas.Font.Color:=clGreen;
    DBGridEh1.DefaultDrawDataCell(Rect,Field,State);
    end;
      

  6.   

    在控件属性设置中有一个什么项drawstyle的,设置为ownerDraw就行了。
      

  7.   

    没有找到这个叫drawstyle的属性呢??