【问题标题】:How to avoid an event being overwritten by a general one?如何避免事件被一般事件覆盖?
【发布时间】:2021-06-13 04:07:23
【问题描述】:

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

ON ESCAPE ANYWHERE

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

ON ESCAPE ...

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

提前致谢

【问题讨论】:

    标签: event-handling openedge progress-4gl


    【解决方案1】:

    来自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.
    

    【讨论】:

    • 哎呀,显然我错误地解释了我的情况:这个问题是前一个问题的后续问题 (stackoverflow.com/questions/66639142/…)。在提到的框架中,我只是将on "window-close" of frame 变成了on "window-close", ESCAPE of frame,但这似乎不起作用。我怀疑这是由主应用程序中提到的一般事件引起的,因此是这个新问题。如您所见,我不想转义框架内的单个小部件,但我希望转义整个框架。
    • 创建一个非常简短的示例来说明您的问题通常可以消除任何怀疑。
    猜你喜欢
    • 1970-01-01
    • 2021-08-11
    • 2018-10-22
    • 2014-06-06
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    相关资源
    最近更新 更多