请问:在delphi中怎样判断DBgrid中数据是否被修改,以便在退出窗口时加以提示

解决方案 »

  1.   

    若DBGrid.DataSource.DateSet为ADOQuery1,这样试一下:if ADOQuery1.Modified then ...
      

  2.   

    procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      if ADODataSet1.Modified then
        begin
        Messagedlg('对不起,你还没有保存数据?',mtInformation,[mbOK],0);
        CanClose:=false;
        end;
    end;
      

  3.   

    试试
    DBGrid.DataSource.DateSet.Fields[i].NewValue<>DBGrid.DataSource.DateSet.Fields[i].OldValue
      

  4.   

    procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      if ADOQuery1.Modified then
        begin
        ADOTable1.post;
        end;
    end;
      

  5.   

    procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      if not(DBGrid.DataSource.DataSet.State in [dsEdit,dsInsert]) then
        begin
          Messagedlg('对不起,你还没有保存数据?',mtInformation,[mbOK],0);
          CanClose:=false;
        end;
    end;
      

  6.   

    不好意思,上面搞錯啦:procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      if DBGrid.DataSource.DataSet.State in [dsEdit,dsInsert] then
        begin
          Messagedlg('对不起,你还没有保存数据?',mtInformation,[mbOK],0);
          CanClose:=false;
        end;
    end;
      

  7.   

    konhon(优华无限)的方法我还没试,不过前面的midified是不行,请问mvt是什么方法
      

  8.   

    procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      if DBGrid.DataSource.DataSet.State in [dsEdit,dsInsert] then
        begin
          Messagedlg('对不起,你还没有保存数据?',mtInformation,[mbOK],0);
          CanClose:=false;
        end;
    end;测试中还有存在这种情况,假如编号原来为:0001,我修改为0002,但是在我退出之前又改为原来的0001,也就是说并没有修改编号,但是退出之前还问我是否保存,理论上不应该提示