procedure TForm1.DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if cds2.FieldByName('促销状态').AsString='执行' then
        begin
            DBGrid2.Canvas.Font.Color := clgreen;
            DBGrid2.DefaultDrawColumnCell(Rect, DataCol, Column, State);
        end;
end;

procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);
begin
   if cds1.FieldByName('促销状态').asstring='执行' then
        begin
            DBGridEh1.Canvas.Font.Color := clgreen;
            DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
        end;
end;为什么上面代码中DBGrid中能够通过,在DBGridEh中就不行呢?

解决方案 »

  1.   

    你把DBGrid中用到的单元加进来看看
      

  2.   

    经过测试,应该是DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);无法通过,高手能指点一下吗?怎么才能正常通过???
      

  3.   

    procedure TFYanGong.DBGridEh1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumnEh;
      State: TGridDrawState);
    begin
    if DBGridEh1.DataSource.DataSet.FieldByName('在职类别').AsString='试用职员' then
     DBGridEh1.Canvas.Brush.Color := $00FFECD9
     else if DBGridEh1.DataSource.DataSet.FieldByName('在职类别').AsString='正式职位' then
     DBGridEh1.Canvas.Brush.Color :=clWindow
     else if DBGridEh1.DataSource.DataSet.FieldByName('在职类别').AsString='离职人员' then
          DBGridEh1.Canvas.Brush.Color :=  clMenuBar;
         DBGridEh1.Canvas.Font.Color := $00F77B00;
        DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;
      

  4.   

    cds2.FieldByName('促销状态').AsString-- 你这是与dataset相关,太费cpu了,这种做法不好   你可以考虑直接读grid数据