私のカスタマイズでは、WEBUI の同じウィンドウ/テーブルに2 つの CreateLineFromフォームを作成したいと考えています。
通常、Zkwebui の WCreateFromFactory で WClass ファイルを呼び出します (tableID とクラス名を指定して静的)。
私の質問は、同じウィンドウで別の「CreateLineFrom」フォームを使用する方法ですか?
私のカスタマイズでは、WEBUI の同じウィンドウ/テーブルに2 つの CreateLineFromフォームを作成したいと考えています。
通常、Zkwebui の WCreateFromFactory で WClass ファイルを呼び出します (tableID とクラス名を指定して静的)。
私の質問は、同じウィンドウで別の「CreateLineFrom」フォームを使用する方法ですか?
設定変更のみで [ Create Line From ] ボタン機能がもう 1 つ必要な場合は、次のポイントに従う必要があります。
例 :- フィールド名 as Crate Lines From2
Column AS CrateFrom レコードを保存します。
ここで、フィールド シーケンス タブを使用して、2 番目の 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 つの同じフィールドが必要な理由を教えてください。これはセキュリティに関連していますか? もしそうなら、私たちは非常に簡単な方法を達成することができます
ハッシュマップが最後に指定された値を格納しているため、Adempiere 機能では同じウィンドウに 2 つの CLF フォームを作成できません。つまり、実行時に「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 にアクションを追加し、WCreateFromFactory のコピーである新しいクラス WCreateFromIMFactory を作成しました。
if (col.equals("CreateFrom") ) {
ICreateFrom cf = WCreateFromFactory.create(curTab);
}
else if (col.equals("CreateFromIM") )
ICreateFrom cf = WCreateFromIMFactory.createIM(curTab);
}