Adempiere - Как спроектировать / вызвать 2 кнопки CreateLinesFrom в том же окне
В моей настройке я хочу создать 2 формы CreateLineFrom в том же окне / таблице в WEBUI.
Обычно мы вызываем наш файл WClass в WCreateFromFactory (статический, давая tableID и имя класса) в Zkwebui
Мой вопрос, как использовать другую форму "CreateLineFrom" в том же окне?
2 ответа
Если вам нужна еще одна функциональность кнопки " Создать строку из" только путем изменения конфигурации, вам нужно следовать следующему пункту
- Удалить индекс AD_FIELD_COLUMN таблицы AD_Field,
- Создайте еще одну запись во вкладке "Поле" окна "Окно", "Вкладка и поле".
Пример:- Имя поля в виде строк ящика 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.
Шаги, чтобы показать поле в форме:-
- Открыть таблицу А Окностолбца А выбрать над любой таблицей
- Создайте элемент System с помощью newFieldName и сохраните его
- Введите имя и имя столбца базы данных как
- Выберите длину как 1
- Ссылка как кнопка и сохранение записи
- Теперь нажмите на кнопку синхронизации столбца
- Теперь откройте любое соответствующее окно, поле вкладки и выберите вкладку
- Нажмите на кнопку Создать поля, Вы получите вновь созданную кнопку
- Вы можете выровнять поле, используя вкладки " Поле" и " Последовательность полей".
дайте мне знать, почему вам нужно 2 одинаковых поля в одной вкладке, это связано с безопасностью? если это так, то мы можем достичь очень простого пути
В 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);
}