如果用户修改了数据没有按提交键 这时候就要退出窗体 那么修改的数据将不会保存 怎么提醒用户在推出窗体前保存数据多谢支持

解决方案 »

  1.   

    此时可以查数据源的状态,我也没有试过,比如adoquery 有edit insert等状态,你置了这些状态就可以查到的
      

  2.   

    在窗口的onCloseQuery中检查cds.state的状态
      

  3.   

    这些我知道,我在数据集ADOQUERY1的BEFORECLOSE事件里写入代码
       IF ADOQUERY1.State=DSEDIT THEN
       MESSAGEBOX(FRM_HTGL.HANDLE,'是否退出?','管理系统',MB_YESNO +MB_IcoNquestion);但是这个事件再推出窗体时没有被触发??????????
      

  4.   

    我知道了 下面的代码不应该在数据集的BEFORECLOSE事件里写 而应该在窗体的onCloseQuery中写;
       IF ADOQUERY1.State=DSEDIT THEN
       MESSAGEBOX(FRM_HTGL.HANDLE,'是否退出?','管理系统',MB_YESNO +MB_IcoNquestion);
    但是是不是仅判断数据集的STATE=DSEDIT就行了呢
      

  5.   

    如果,是Edit则在事件中处理,
    如果是dbGrid中,我只知道delphi7的数据缓冲技术,在数据集组件中,有两个特别的属性,好像是delta,data,只要改变了dbGrid中的值,delta的值就会改变,你可以看看这个值.
      <delphi7 数据库高效程序设计>  这本书有详细的说明,
    请楼主看看!!!
      

  6.   

    onCloseQuery 中编写程序,里面有个变量can 如果它为真 窗体关闭!
      

  7.   

    form1的closequery
    procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      if adoquery1.State in [dsEdit,dsInsert] then  
      begin
        showmessage('未保存!');
        Abort;
      end;
    end;