打印本文 打印本文  关闭窗口 关闭窗口  
VFP表单在被关闭前能显示确认信息
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 16:09:37  文章录入:杜斌  责任编辑:杜斌

  首先,让我们来看一个VFP表单的卸载步骤:表单在卸载前,首先要询问表单的QueryUnload事件,然后再卸载表单。也就是说,QueryUnload事件是表单卸载时第一个被触发的事件。在 QueryUnload 事件过程中执行 NODEFAULT命令可以阻止表单卸载。这样我们通过在QueryUnload 事件中巧妙包含NODEFAULT,就能避免直接卸载表单。 

  首先,让我们来看一个VFP表单的卸载步骤:表单在卸载前,首先要询问表单的QueryUnload事件,然后再卸载表单。也就是说,QueryUnload事件是表单卸载时第一个被触发的事件。在 QueryUnload 事件过程中执行 NODEFAULT命令可以阻止表单卸载。这样我们通过在QueryUnload 事件中巧妙包含NODEFAULT,就能避免直接卸载表单。 

  QueryUnload是怎样被触发的呢?当在代码中执行 CLEAR WINDOWS,RELEASE WINDOWS 或 QUIT 等命令时、或者当用户双击控制菜单框时、或者当用户从表单的控制菜单中选择执行“关闭”命令时,都会触发表单的 QueryUnload 事件。 
  先在表单的QueryUnload事件中包含下面代码: 
   
  *-- 显示包含“是”、“否”两个按钮的对话框 
  nYesNo = MessageBox("确定要退出吗?",4+48+256,"提示") 
   
  If nYesNo = 6 &&如果选取了“是”,则退出 
   *-- 退出前要执行的代码写在这里, 
   *-- 然后执行类似下面的退出代码 
   ThisForm.Release 
  Else &&选取了“否”,不退出 
   NODEFAULT 
  EndIf 
   
  这样当有卸载表单的事件发生时,都会显示确认要退出的对话框:只有选取“是”,才能卸载表单。 
   
  这样做是非常有用的,例如我们为了避免正在操作的数据没有保存就退出,可以在程序中使用这段代码,至于如何保存数据,不同的程序采取的方法不尽相同,这里我们不做详细讨论。 

  需要说明的是,当在代码中直接执行 RELEASE 命令或直接调用表单的 Release 方法时,不会触发 QueryUnload 事件。因此,我们应尽量避免在代码中直接执行RELEASE 命令或调用表单的 Release 方法。取代的方法是,当要卸载表单时,转向调用表单的QueryUnload方法。 
   
  例如,我们要在表单中放置一个标题为“退出”的命令按钮,用来退出这个表单,并希望在退出时能显示确认对话框,可以在这个命令按钮的Click事件代码中包含下面的命令: 
  ThisForm.QueryUnload 

  QueryUnload是怎样被触发的呢?当在代码中执行 CLEAR WINDOWS,RELEASE WINDOWS 或 QUIT 等命令时、或者当用户双击控制菜单框时、或者当用户从表单的控制菜单中选择执行“关闭”命令时,都会触发表单的 QueryUnload 事件。 
  先在表单的QueryUnload事件中包含下面代码: 
   
  *-- 显示包含“是”、“否”两个按钮的对话框 
  nYesNo = MessageBox("确定要退出吗?",4+48+256,"提示") 
   
  If nYesNo = 6 &&如果选取了“是”,则退出 
   *-- 退出前要执行的代码写在这里

   *-- 然后执行类似下面的退出代码 
   ThisForm.Release 
  Else &&选取了“否”,不退出 
   NODEFAULT 
  EndIf 
   
  这样当有卸载表单的事件发生时,都会显示确认要退出的对话框:只有选取“是”,才能卸载表单。 
   
  这样做是非常有用的,例如我们为了避免正在操作的数据没有保存就退出,可以在程序中使用这段代码,至于如何保存数据,不同的程序采取的方法不尽相同,这里我们不做详细讨论。 
   
  需要说明的是,当在代码中直接执行 RELEASE 命令或直接调用表单的 Release 方法时,不会触发 QueryUnload 事件。因此,我们应尽量避免在代码中直接执行RELEASE 命令或调用表单的 Release 方法。取代的方法是,当要卸载表单时,转向调用表单的QueryUnload方法。 
   
  例如,我们要在表单中放置一个标题为“退出”的命令按钮,用来退出这个表单,并希望在退出时能显示确认对话框,可以在这个命令按钮的Click事件代码中包含下面的命令: 
  ThisForm.QueryUnload

打印本文 打印本文  关闭窗口 关闭窗口