各位大神:
              Delphi中DBGridEh编辑完,然后上下移动后,数据会自动post,这样要判数据集Modified判断会为假,如何解决此问题,
因为ADOquery的Locktype设置为ltBatchOptimistic,所以数据在缓存中,这时想点保存按钮判断数据集是否Modified,但是此时已经为假了
判断不出修改过数据,求解。

解决方案 »

  1.   

    modified只能判断当前记录,移动后就判断不了啦。
    如果开了ltBatchOptimistic,可以用UpdateStatus来判断,或者在query的BeforePost事件中做一下处理。 
      

  2.   

    TDataSource.OnUpdateData 数据更新之前触发
    TDataSource.OnDataChange 数据修改之后触发
      

  3.   

    我是想在保存按钮中判断是否有改变,如果改变则弹出提示,是否保存,这样不能用Modified判断的话,则没法进行判断了啊!
      

  4.   

    这个可以这样做,一开始将保存按钮禁用,然后在DataSource的OnStateChange中进行判断
    if DataSource.State in [dsInsert, dsEdit] then
    begin
      btnSave.Enabled := True;
    end;
      

  5.   

    只能在数据集内部判断,   外部判断基本上没办法,TDataSet 有记录集与缓冲区, 你想判断是否修改只能从记录集与缓冲区进行比较