应用last-event,任意键不能按预期工作

时间:2016-10-26 17:05:07

标签: progress-4gl openedge

我有一个链接到数据库字段的编辑器。 当用户按下某些键时,程序的行为应该不同, 对于其余的键,它应该保持默认行为。我正在使用这部分代码:

ON ANY-KEY OF editor_1 IN FRAME F-Main
DO:
   APPLY LAST-EVENT:LABEL TO SELF.
   RETURN NO-APPLY.
END.

问题是,当执行APPLY LAST-EVENT:LABEL时,编辑器不会表现为默认值。

默认行为的一些示例,即未触发任何键的行为:

  • CTRL + C用于复制所选文本
  • CTRL + V用于粘贴复制的文本

在编辑器中触发任意键后,程序的工作方式如下:

  • CTRL + C aplication ABORTS
  • CTRL + V不起作用
  • CURSORS DOWN / RIGHT / LEFT / UP不起作用
  • BACKSPACE不起作用

无论如何触发任意键而不覆盖默认行为?

注意:Progress 4GL是v11.3,从windows执行。

3 个答案:

答案 0 :(得分:1)

您应该将键标签映射到要应用的键FUNCTION。

类似的东西:

ON ANY-KEY OF editor_1 IN FRAME F-Main
DO:
   if last-event:label = "backspace" then
     apply delete-char to self.
    else
     apply lastkey to self.
   /* use a CASE statement to extend this... */
   RETURN NO-APPLY.
END.

答案 1 :(得分:1)

我谈到了进展,但没有解决这个问题的方法。 ANY-KEY的这个问题与编辑有关。

您可以将某些键标签映射到特定键FUNCTION,但是某些事件不可能(例如,光标移动)。

最后我不得不触发特殊键,但在这种特殊情况下,它更像是ANY-KEY。

答案 2 :(得分:0)

不是在任何键上触发事件,为什么不为这些特殊键执行操作呢?

例如,control-C行为将在此触发器中:

ON CTRL-C of editor_1 IN FRAME F-Main