Oracle Forms 12c中如何在已打开表单内创建快捷键调用其他表单
Oracle WebLogic Forms 自定义快捷键实现方案
核心需求实现逻辑
你需要的自定义快捷键调用其他表单的功能,可以按以下步骤实现:
- 先在主菜单表单的
WHEN-NEW-FORM-INSTANCE触发器中,提前把存储在数据表中的所有自定义快捷键配置加载到内存的记录组或者全局变量中,避免每次按键都查询数据库降低性能。 - 在表单级别绑定按键捕获逻辑,匹配到预设快捷键后直接调用
OPEN_FORM/CALL_FORM方法打开目标表单即可。
相关疑问解答
1. 是否需要创建自定义JavaScript触发器?
分两种场景判断:
- 不需要自定义JS的场景:如果选用的快捷键(比如你举例的Shift+A)没有和浏览器默认快捷键、Forms内置快捷键冲突,直接用Forms原生触发器即可实现,不需要额外写JS。
- 需要自定义JS的场景:如果你要使用的组合键被浏览器默认占用,或者需要更细粒度的按键事件拦截,才需要编写自定义JS绑定到表单容器的keydown事件,拦截后再调用Forms内置方法触发表单跳转逻辑。
2. KEY-OTHERS触发器的作用是什么?
KEY-OTHERS是Oracle Forms的原生行级/表单级触发器,作用是捕获所有没有被其他具体KEY-*类触发器(比如KEY-F1、KEY-NEXT-ITEM等内置按键触发器)处理的按键事件。
这个触发器刚好适配你的自定义快捷键需求:所有你自定义的、没有被Forms内置绑定的按键组合,都会进入KEY-OTHERS的执行逻辑,你只需要在这个触发器内做快捷键匹配和表单调用即可。
注意事项
Alt键触发菜单是WebLogic部署Forms的默认客户端行为,强行修改需要调整Forms静态资源配置,成本较高,优先使用Shift、Ctrl开头的组合键可以规避这个问题。
如果需要快捷键全局生效(所有已打开的表单都能响应),可以把KEY-OTHERS触发器写到所有表单继承的公共模板表单中,避免重复开发。
内容的提问来源于stack exchange,提问作者Asad Ali Khan
相关产品推荐
相关产品推荐

