我在窗口中的所有小部件上都有一个用于RETURN / CURSOR-DOWN的代码,基本上可以像按下TAB一样。效果很好,但是我想让EDITOR小部件使用RETURN(将当前行分成两行)/ CURSOR-DOWN的默认功能。
我尝试添加
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.
有办法吗?
答案 0 :(得分:2)
我已经在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.
让我知道这是否适合您。在这里对我来说似乎还可以。