OpenEdge 10.2A - 如何在编辑器小部件上应用默认 RETURN / CURSOR-DOWN,即使 RETURN / CURSOR-DOWN 的通用代码存在 ANYWHERE ?
OpenEdge 10.2A - How to apply the default RETURN / CURSOR-DOWN on Editor widget even if a general code for RETURN / CURSOR-DOWN with ANYWHERE exists?
我有一个 RETURN / CURSOR-DOWN 的代码,适用于 window 中的所有小部件,基本上就像按下 TAB 键一样。它工作得很好,但我想要 RETURN 的默认功能(将当前行分成两行)/ CURSOR-DOWN 用于 EDITOR 小部件。
我已经尝试添加
APPLY "ENTER" TO SELF.
或
APPLY "RETURN" TO SELF.
或
APPLY "CTRL-J" TO SELF. /*Ctrl-Enter*/
对于 EDITOR 小部件,但是当在 EDITOR 中按下 RETURN / CURSOR-DOWN 时,它不会执行任何操作。就像 RETURN / CURSOR-DOWN 没有被按下一样。
ON RETURN OF {&WINDOW-NAME} ANYWHERE
DO:
IF SELF:TYPE="EDITOR" THEN
DO:
APPLY "ENTER" TO SELF. /*Does NOT Work*/
END.
ELSE IF SELF:TYPE = "BUTTON" THEN
DO:
APPLY "Choose".
END.
ELSE
DO:
APPLY "Tab".
RETURN NO-APPLY.
END.
END.
ON CURSOR-DOWN OF {&WINDOW-NAME} ANYWHERE
DO:
IF SELF:TYPE="EDITOR" THEN
DO:
APPLY "CURSOR-DOWN" TO SELF. /*Does NOT Work*/
END.
ELSE
DO:
APPLY "Tab".
RETURN NO-APPLY.
END.
END.
有办法吗?
我已经在 10.2B08 中测试过了。这是主要的任意位置触发器:
ON RETURN OF {&WINDOW-NAME} ANYWHERE DO:
IF SELF:TYPE = "BUTTON" THEN DO:
APPLY "Choose".
END.
else do:
apply 'tab'.
return no-apply.
end.
end.
ON CURSOR-DOWN OF {&WINDOW-NAME} ANYWHERE DO:
if self:type ne 'EDITOR' then DO:
APPLY "Tab".
RETURN NO-APPLY.
END.
END.
和你的没什么不同。
现在在编辑器中,向 RETURN 添加一个触发器,向 CURSOR-DOWN 添加一个触发器。
这是您编辑器的 RETURN 触发器:
self:insert-string(chr(13)).
这里是编辑器的 CURSOR-DOWN 触发器:
DEFINE VARIABLE iOffset AS INTEGER NO-UNDO.
assign iOffset = self:cursor-char
self:cursor-line = self:cursor-line + 1
self:cursor-char = ioffset no-error.
do while error-status:get-message(1) begins '**Unable to set attribute CURSOR-CHAR':
assign iOffset = iOffset - 1
self:cursor-char = ioffset no-error.
if iOffset = 1 then leave.
end.
让我知道这是否适合您。我觉得这里没问题。
我有一个 RETURN / CURSOR-DOWN 的代码,适用于 window 中的所有小部件,基本上就像按下 TAB 键一样。它工作得很好,但我想要 RETURN 的默认功能(将当前行分成两行)/ CURSOR-DOWN 用于 EDITOR 小部件。
我已经尝试添加
APPLY "ENTER" TO SELF.
或
APPLY "RETURN" TO SELF.
或
APPLY "CTRL-J" TO SELF. /*Ctrl-Enter*/
对于 EDITOR 小部件,但是当在 EDITOR 中按下 RETURN / CURSOR-DOWN 时,它不会执行任何操作。就像 RETURN / CURSOR-DOWN 没有被按下一样。
ON RETURN OF {&WINDOW-NAME} ANYWHERE
DO:
IF SELF:TYPE="EDITOR" THEN
DO:
APPLY "ENTER" TO SELF. /*Does NOT Work*/
END.
ELSE IF SELF:TYPE = "BUTTON" THEN
DO:
APPLY "Choose".
END.
ELSE
DO:
APPLY "Tab".
RETURN NO-APPLY.
END.
END.
ON CURSOR-DOWN OF {&WINDOW-NAME} ANYWHERE
DO:
IF SELF:TYPE="EDITOR" THEN
DO:
APPLY "CURSOR-DOWN" TO SELF. /*Does NOT Work*/
END.
ELSE
DO:
APPLY "Tab".
RETURN NO-APPLY.
END.
END.
有办法吗?
我已经在 10.2B08 中测试过了。这是主要的任意位置触发器:
ON RETURN OF {&WINDOW-NAME} ANYWHERE DO:
IF SELF:TYPE = "BUTTON" THEN DO:
APPLY "Choose".
END.
else do:
apply 'tab'.
return no-apply.
end.
end.
ON CURSOR-DOWN OF {&WINDOW-NAME} ANYWHERE DO:
if self:type ne 'EDITOR' then DO:
APPLY "Tab".
RETURN NO-APPLY.
END.
END.
和你的没什么不同。 现在在编辑器中,向 RETURN 添加一个触发器,向 CURSOR-DOWN 添加一个触发器。 这是您编辑器的 RETURN 触发器:
self:insert-string(chr(13)).
这里是编辑器的 CURSOR-DOWN 触发器:
DEFINE VARIABLE iOffset AS INTEGER NO-UNDO.
assign iOffset = self:cursor-char
self:cursor-line = self:cursor-line + 1
self:cursor-char = ioffset no-error.
do while error-status:get-message(1) begins '**Unable to set attribute CURSOR-CHAR':
assign iOffset = iOffset - 1
self:cursor-char = ioffset no-error.
if iOffset = 1 then leave.
end.
让我知道这是否适合您。我觉得这里没问题。