如何避免事件被一般事件覆盖?

问题描述

我有一个主应用程序,具有以下事件:

ON ESCAPE ANYWHERE

我刚刚在一个窗口中创建了一个框架,我想在其中添加一个事件:

ON ESCAPE ...

然而,这似乎不起作用,因为主应用程序已经有一个 ON ESCAPE ANYWHERE。是否有类似 ON ESCAPE OVERWRITES DEFAULT 之类的东西可以为我的子窗口创建事件?

提前致谢

解决方法

来自 documentation 注释:

使用 ON 语句定义的触发器将一直有效,直到下列情况之一 发生以下情况:

  • 另一个 ON 语句为同一事件和小部件定义了另一个触发器(或 REVERT)
  • 对于非持久触发器,出现 ON 语句的过程或触发器块将终止

所以我认为您的主要应用程序触发器是您自己的触发器之后定义的,覆盖它。如果你足够具体,你应该没问题:

on escape anywhere do:
   message 'escaping from anywhere' view-as alert-box.     
end.

define frame fr1
   cc1 as char 
   cc2 as char 
   with side-labels
   .   

do with frame fr1:

   enable all.   
   
   on escape of cc1 do:
      message "escaping from cc1 in frame 1" view-as alert-box.
   end.
   
end.

view frame fr1.
wait-for close of frame fr1.