DBGrid中或DBGridEh中如何根据数据表某字段的值设定某字段单元格的颜色,(注意:不是将整行或整列都变色,仅将某一单元格变色)

解决方案 »

  1.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      //列坐标:某字段名
      if column.fieldname='ID' then  
         //行坐标,判断某字段值(根据实际情况用column.Field.asString='abc' 之类)               
         if column.Field.asInteger=45 then   //----此处即ID=45
            with sender as Tdbgrid do
               begin
                  canvas.Brush.color:=clyellow; //改变底色
                  canvas.Font.color:=clred;     //改变字体颜色
                  DefaultDrawColumnCell(Rect, DataCol,Column, State);
               end;
     end;
    end.
      

  2.   

    这里是对字段为‘ID’的单元格变色,能否根据“ID”值对其它字段的单元格变色呢?
      

  3.   


      if column.FieldName='fcount' then    //确定要修改的列
      begin
        with sender as Tdbgrid do
        begin
          if DataSource.DataSet.FieldByName('id').AsInteger=2 then  /判断id是不是等于2
          begin
            canvas.Brush.color:=clyellow; //改变底色
            canvas.Font.color:=clred;     //改变字体颜色
            DefaultDrawColumnCell(Rect, DataCol,Column, State);
          end;
        end;
      end;