4

在我的定制中,我想在 WEBUI 的同一窗口/表格中创建 2 个CreateLineFrom表单。

通常我们在 Zkwebui 中调用 WCreateFromFactory 中的 WClass 文件(通过提供 tableID 和类名来静态)

我的问题是如何在同一窗口中使用另一个“CreateLineFrom”表单?

4

2 回答 2

0

在 adempiere 功能中,无法在同一窗口中创建 2 个 CLF 表单,因为 hashmap 存储了最后一个给定值,即当我执行它时调用“WCreateFrom2UI.class”

private static HashMap<Integer, Class<? extends ICreateFrom>> registeredClasses = null;

static
{       
    s_registeredClasses.put(I_C_Order.Table_ID, WCreateFrom1UI.class);   
    s_registeredClasses.put(I_C_Order.Table_ID, WCreateFrom2UI.class);  
}

创建了名为“CreateFromIM”的新按钮,在 AbstractADwindowPanel 中添加了操作并创建了新的 WCreateFromIMFactory 类,它是 WCreateFromFactory 的副本

    if (col.equals("CreateFrom")  ) {
        ICreateFrom cf = WCreateFromFactory.create(curTab);

    } 
    else if (col.equals("CreateFromIM") )  
        ICreateFrom cf = WCreateFromIMFactory.createIM(curTab);

        } 
于 2013-12-13T10:07:57.840 回答
0

如果您仅通过配置更改需要一个Create Line From按钮功能,那么您需要遵循以下几点

  1. 删除 AD_Field 表的AD_FIELD_COLUMN索引,
  2. 在Window、Tab 和 field window的 Field 选项卡中再创建一条记录。

例如:- 字段名称为 Crate Lines From2
列 AS CrateFrom 并保存记录。
现在,通过使用字段序列选项卡,您可以对齐第二个 Crate Lines From2 按钮。

您可以在不更改代码的情况下完成此操作。


如果您准备好更改代码,请修改AbstractADWindowPanel.java

actionButton方法中,您可以找到

    else if (col.equals("CreateFrom")) code 

只需按如下方式更新此代码

 else if (col.equals("CreateFrom") || col.equals("newFieldName"))

现在您可以在下表中添加所需列的上方,列应该是 newFieldName(您用 java 代码编写的内容)C_Invoice、M_InOut、M_Movement、C_BankStatement。

在表单中显示字段的步骤:-

  1. 打开表格和列窗口并在任何表格上方选择
  2. 使用 newFieldName 创建一个 System 元素并保存它
  3. 输入数据库列名称和名称相同
  4. 选择长度为1
  5. 引用为按钮并保存记录
  6. 现在单击同步列按钮
  7. 现在打开任何相应的窗口、选项卡字段并选择选项卡选项卡
  8. 单击创建字段按钮,您将获得新创建的按钮
  9. 您可以使用字段字段顺序选项卡对齐字段

让我知道为什么在一个选项卡中需要 2 个相同的字段,这与安全性有关吗?如果是那么我们可以实现非常简单的方法

于 2013-11-19T07:05:03.697 回答