有两个DBGRID:A,DBGRID:B,都是有相同的5个字段
现在要把两个DBGRID的记录逐行按字段逐个比较,只要B的字段值对应A的字段不相等的,那么该DBGRID相应的格子就以红色来显示是不是好麻烦?我想不出来

解决方案 »

  1.   

    procedure TForm1.Button3Click(Sender: TObject);
    var
      i : Integer;
    begin
      with DBGrid2.DataSource.DataSet do
      begin
        First;
        DBGrid1.DataSource.DataSet.First;
        while not Eof do
        begin
          for i := 0 to 4 do
          begin
            if Fields[i].Value <> DBGrid1.DataSource.DataSet.Fields[i].Value then
              DBGrid2.Columns[i].Color := clRed;
          end;
          Next;
          DBGrid1.DataSource.DataSet.Next;
        end;
      end;
    end;
      

  2.   

    我想要在DBGRID B 的这个事件中来完成这个代码吧
    procedure TForm1.DBGridBDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    var fieldName: string;
        dataRow: integer;
    begin
      fieldName := column.fieldName; //取得当前的字段名
      dataRow := DBGRIDB.datasource.dataset.recno; //取得当前是画到第几行;  根据datarow找到 DBGRID.datasource.dataset 的对应行;
      根据fieldName 来比较 两个grid的dataset的该字段的值;
      
      根据比较的结果来画色
    end;