Adempiere - 如何在同一窗口中设计/调用2 CreateLinesFrom按钮

时间:2013-11-18 10:34:19

标签: adempiere

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

通常我们在Zkwebui中调用WCreateFromFactory中的WClass文件(通过给出tableID和Class名称为static)

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

2 个答案:

答案 0 :(得分:0)

如果您还需要一个创建行按钮功能,只需要配置更改,那么您需要按照以下要点

  1. 删除AD_Field表的 AD_FIELD_COLUMN 索引,
  2. 窗口,标签和字段 窗口的字段标签中再创建一条记录。
  3. Ex: - 字段名称为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. 您可以使用字段字段序列标签对齐字段
    10. 让我知道你为什么在一个标签中需要2个相同的字段, 这与安全有关吗?如果是,那么我们可以实现非常简单的方式

答案 1 :(得分:0)

在adempiere功能中,无法在Same Window中创建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);

        }