解决方案 »

  1.   

    EASY!
    给你提示:
       在FORM上放一个DBGRID,然后右激有个小精灵(COL  EDit)!
       然后添加单元!
       在设定没格的Color!
      

  2.   

    在OnDrawColumnCell事件中
    if Column.FieldName=字段名 then
    begin
       if Column.field.value>条件 then
       begin 
         dbgrid1.canvas.font.color:=//字体颜色;
         dbgrid1.canvas.brush.Brush.Color:=//背影色;
         dbgrid1.canvas.textrect(...);//将内容输出
       end;
    end;
      

  3.   

    procedure DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
      if 条件1 then
      begin
        DBGrid1.Canvas.Brush.Color:=clYellow; //背景色为黄色
        DBGrid1.Canvas.Font.Color := clRed; 
      end
      else
        if 条件2 then
        begin
          DBGrid1.Canvas.Brush.Color:=clSkyBlue; //背景色为天蓝色
          DBGrid1.Canvas.Font.Color := clPurple;
        end
        else
          DBGrid1.Canvas.Font.Color:=clGreen;//默认的
      DBGrid1.DefaultDrawColumnCell(rect,datacol,column,state);//这句一定要加上
    end;
      

  4.   

    楼上兄!不行啊!我只是想根据条件(数值)改变DBGRID中某个单元格的背景或字体颜色,不是表格中的整行与整列。小弟不才,对以上的代码看不明白,还请各位指教!!!
      

  5.   

    procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    begin
      if (Field.FieldName='NO') and (Field.DataSet.FieldByName('NAME').AsString='John') then
      begin
        dbGrid1.Canvas.Brush.Color:=clRed;
        dbgrid1.Canvas.Font.Color:=clblue;
      end;
      dbgrid1.DefaultDrawDataCell(rect,field,state);
    end;
      

  6.   

    onDrawDataCell事件和ondrawcolumncell事件
    分别控制单元格和行的颜色
      

  7.   

    wangxl430(卡拉),Field.FieldName='NO'和Field.DataSet.FieldByName('NAME').AsString='John'分别指的是什么?我运行以上代码不行呀!请指点!
      

  8.   

    procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    begin
      if (Field.FieldName='NO') and (Field.DataSet.FieldByName('NAME').AsString='John') then
      begin
        dbGrid1.Canvas.Brush.Color:=clRed;
        dbgrid1.Canvas.Font.Color:=clblue;
      end;
      dbgrid1.DefaultDrawDataCell(rect,field,state);
    end;
      

  9.   

    被wangxl430(卡拉)提前了
    原贴请看http://expert.csdn.net/Expert/topic/1380/1380412.xml?temp=.7136194
      

  10.   

    hamzsy兄!原贴已看过,但问题还没解决,其实只差点点了,在IF语句的条件表达式中,怎样才能得到DBGRID单元格的值?还有:if (Field.FieldName='NO') and (Field.DataSet.FieldByName('NAME').AsString='John') then
    此句不能执行。请指点!
      

  11.   

    Field.FieldName是单元格对应的字段名,Field.DataSet.FieldByName('NAME').AsString就是单元格的值,这两个参数换成你的就可以了
      

  12.   

    hamzsy(十二真空间) !能上QQ聊吗?我的QQ:16593299
      

  13.   

    唉!楼主的基础知识真应该补一下啦。
    连这句都看不懂?
    if (Field.FieldName='NO') and (Field.DataSet.FieldByName('NAME').AsString='John') then
    你只需要改动'no'、'name'、'john'这几个值就行啦,其他照抄。
    'no'是你要设定颜色的单元格对应的字段名。
    'name'是你用来判断是否符合条件的字段名。例如:你的是数值字段。
    'john'是你判断的条件值。例如你的可能是
    Field.DataSet.FieldByName('count').Asinteger>100
    这个也看不懂的话,多看书,看delphi帮助才行啊。