field1   field2   field3   field4   field5   field6   field7   field8   1        2         3        4        5        6        7        8   2        2         5        5        7        6        9        8   3        2         3        4        5        6        7        8  这是一张表 在dbgrid1中 我想达到这样的效果 只要某条记录和它上一条记录的字段值相同 这个值(并且这个值所在的CELL)就用红色表示 (假设red表示红色)field1   field2   field3   field4   field5   field6   field7   field8   1        2         3        4        5        6        7        8   2        2(red)  5        5        7        6(red) 9        8(red)   3        2(red)  3        4        5        6        7        8(red) 怎么处理呢??请大家给个主意吧 在dbgrid里处理 如何处理?在数据库里处理的话如何处理?给思路 代码都可以  谢谢了!

解决方案 »

  1.   

    怎样在DBGrid中改变单元格的颜色
    **************************************************************
    procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    begin
         if field.fieldname='条件' then 
            begin
              dbgrid1.Canvas.Brush.Color := clred;
              dbgrid1.DefaultDrawDataCell(rect,field,state);
            end;   
    end;
      

  2.   

    http://www.vbzx.net/ArticleView/vbzx_Article_View_573.asp
    看看这个
      

  3.   

    谢谢楼上的了 我的问题是怎么把前后两行的数据联系起来 也就是1#所说的"条件" 至于改变行,列,的颜色的问题我就没有必要来论坛里给大家送分了  我想了个办法 就是在每个字段后增加一个BOOLEAN值 判断是不是和上条记录的值重复?然后判断BOOL值 如果为 TRUE的话 就在它的前一个字段值上显示为红色 哎~~~
      

  4.   

    思路:
    把数据记录定义成二维数组a[][],然后比较
    for i:=2 to 记录行数 do
      for j:=2 to 8 do
       if  a[i][j]=a[i-1][j] then
       begin
         (执行符合条件的上色)
       end;DBGrid就是二维数组  i=row j=col
      

  5.   

    建议使用StringGrid,这样可以满足你的功能