You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle Forms多行文本框KEY-ENTER触发及多行复制粘贴问题咨询

Oracle Forms 两个问题的解决方案

问题1:多行Text Field按Enter跳转下一个项无效果

默认情况下,多行文本项的Enter键会触发换行动作,即使添加了KEY-ENTER触发器,默认行为仍会执行。按以下步骤修改:

  1. 确保KEY-ENTER触发器创建在目标多行文本项的级别(而非块或表单级别,避免被更高层级触发器覆盖)。
  2. 在触发器中添加代码终止默认换行行为:
BEGIN
  GO_ITEM('XXXBLOCK.QUANTITY');
  -- 阻止默认的换行动作
  RAISE FORM_TRIGGER_FAILURE;
END;
  1. 若仍需文本项支持多行显示,保持Allow Newline属性为Yes;若不需要多行输入,可直接将该属性设为No,此时Enter键会自动触发跳转(无需触发器)。

问题2:单行TextBox实现多行内容粘贴

单行文本项默认会截断粘贴内容中的换行符,仅保留第一行。可通过以下两种方式解决:

方式1:允许文本项存储多行(外观保持单行)

  1. 打开目标TextBox的属性面板:
    • 设置Multi-line为Yes
    • 设置Display Height为1(维持单行显示效果)
    • 设置Allow Newline为Yes
  2. 完成设置后,粘贴多行内容时,文本项会完整存储所有行(换行符保留),仅显示第一行内容,可通过滚动查看全部。

方式2:粘贴时替换换行符为分隔符(如逗号)

若需要将多行内容合并为单行显示,添加WHEN-PASTE触发器:

DECLARE
  v_paste_text VARCHAR2(32767);
BEGIN
  -- 获取剪贴板内容
  v_paste_text := CLIPBOARD.GET_TEXT;
  -- 替换换行符为逗号和空格(可按需修改分隔符)
  v_paste_text := REPLACE(REPLACE(v_paste_text, CHR(10), ', '), CHR(13), '');
  -- 将处理后的内容赋值给文本项
  SET_ITEM_VALUE('YOUR_BLOCK.YOUR_ITEM', v_paste_text);
  -- 阻止默认粘贴行为
  RAISE FORM_TRIGGER_FAILURE;
END;

内容的提问来源于stack exchange,提问作者Hung Le

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 00:45:34