我希望能够处理发送到AX中表单的输入。有没有办法做到这一点?
这必须是表格的所有键盘输入。
例如,有一个SysSetupFormRun.task()方法,您可以在其中检测有限数量的任务,但是,从我所看到和尝试过的,它确实处理了所有键盘输入。
答案 0 :(得分:0)
根据我的理解,你有几个要求:
关于第3点的简单快速说明:在不影响系统中的每个表单的情况下,很难做到您正在寻找的内容。键盘输入可能会在FormRun级别(所有表单的基类)或更高级别进行管理,因此在特定表单实例中使用键盘输入会很困难,并且需要非常小心,因为它不会影响系统中的所有其他表单。因此,您应该专注于更改特定表单。另外,根据我的经验,我们无法管理/覆盖/编辑表格上全局可用的多个功能(例如导出到Excel功能中的某些步骤),因此您不太可能在任何情况下都会覆盖键盘交互。
最大的问题源于确定应该重定向哪些输入以及哪些输入不应该(例如Ctrl + C,Ctrl + X等)。如果需求#2 不需要用户能够对除读取之外的数据执行任何操作,那么我建议使用自动代码覆盖输入字段的lostFocus
方法重点关注该领域。它看起来像这样:
public void lostFocus()
{
super();
this.setFocus()
}
同样,这个问题的主要问题是用户将无法在表单上选择任何其他内容。如果只是要读取信息(例如摘要屏幕),这应该不是问题。
如果用户确实需要与所呈现的信息进行交互(例如,从字段中复制描述),则可以对这些字段应用类似的逻辑,这样如果输入任何输入,则会将焦点更改为输入字段。这可以使用textChange
方法触发,但您可能会在转换过程中遗漏一些文字:
public void textChange()
{
super();
//Note: the control fieldName will need to have AutoDeclaration set to Yes
fieldName.setFocus();
}
如果这不能正常工作,您可能需要搜索ActiveX控件,该控件应允许您指定所有输入都转到输入字段,并根据需要更新内容。它可能需要包罗万象(控件将包含输入和显示的控件),因此它可能与AX的其余部分没有相同的外观和感觉,但应该能够做你需要的。