DBGridEH的某一列的值有Y和N,
现在要把值为Y的那一行设置颜色,怎样实现

解决方案 »

  1.   

    根据字段值内容的不同在dbgridEH中来分颜色显示procedure   TfrmBdDetail.DBGridEh1DrawColumnCell(Sender:   TObject;   
          const   Rect:   TRect;   DataCol:   Integer;   Column:   TColumnEh;   
          State:   TGridDrawState);   
      begin   
          if   adoquery1.fieldbyname('合计数量').AsInteger>   adoquery1.fieldbyname('KC').AsInteger   then   
          begin   
                        (Sender   as   TDBGridEH).Canvas.Brush.Color   :=   $008080FF;   
          end;   
          DBGridEh1.DefaultDrawColumnCell(Rect,DataCol,Column,State);   
      end;  
      

  2.   

    Delphi 7里DBGridEh里行变颜色的代码
     
    例如在DBGridEh的OnDrawColumnCell事件里输入如下代码:
     
    if  ADOQuery1.FieldByName('status').AsString='True'  then   //如果条件成立
         begin
           DBGridEh1.Canvas.Brush.Color:=clSilver;         //行底色变色
           DBGridEh1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
         end;
     
    另一种:
     
    if  ADOQuery1.FieldByName('status').AsString='True'  then   //如果条件成立
         begin
           DBGridEh1.Canvas.Font.Color:=clMaroon;     //行字体变颜色
           DBGridEh1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
         end;
      

  3.   

    DBGridEh1.Canvas.Brush.Color:=clSilver;        
    DBGridEh1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
      

  4.   


    procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumnEh;
      State: TGridDrawState);
    begin
      if (column.FieldName = 'DEL') and (column.Field.Value = 'Y') then
      begin
        DBGridEh1.Canvas.Brush.Color := clYellow;
      end;
      DBGridEh1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
    end;
    我写了这行代码,但是DEL列中值为Y的一行,颜色没有变化