dbgrideh列A中有数字 300,2,-0.5 现在需要当列A中数字小于0的时候该表格显示为红色,如何处理,请教!!

解决方案 »

  1.   

    以下代码应该可以,试试: 
     ///
    procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumnEh;
      State: TGridDrawState);
      //设置颜色
       procedure setColor(ii:Integer) ;
       begin
        (Sender as TDBGridEh).Canvas.Brush.Color:=clRed;
           (Sender as TDBGridEh).Canvas.FillRect(Rect);
        (Sender as TDBGridEh).Canvas.TextOut(Rect.Left,
                 Rect.Top,DBGridEh1.DataSource.DataSet.Fields[ii].asstring);
       end;
    var 
      i:intger;
     begin  
      for i:=0 to Fieldscount-1 do 
      if  (DBGridEh1.DataSource.DataSet.Fields[i].AsFloat<0) then
               setColor(i);
    end;
      

  2.   

    我没有装dbgrideh,但我想你应该得到当前列所显示的值(不是用数据集字段判断,是单元格中实际的文字),得道后应该可以在自画事件中处理
      

  3.   

    参考一下procedure   TForm1.DBGrid1DrawColumnCell(Sender:   TObject;   const   Rect:   TRect;   
          DataCol:   Integer;   Column:   TColumn;   State:   TGridDrawState);   
      begin   
          if   (DataCol   =   1)and(ADOTable1.FieldByName('UserName').Value   =   'Administrator')   then   
          begin   
              DBGrid1.Canvas.Font.Color   :=   clRed;   
              DBGrid1.Canvas.Brush.Color   :=   clLime;   
          end;   
          DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);   
      end;   
    以上代码仅把第一列(从零列开始),第UserName='Administgrator'行的单元格的字体颜色改为红色,背景颜色改为亮绿色