Аксапта:Обновите FormTreeControl после изменения изображения
-
19-09-2019 - |
Вопрос
В моих других методах (data, text и т.д.) метод setItem отлично работает для отображения изменений, внесенных в элемент дерева.Однако вызов setItem после изменения значка элемента, похоже, не имеет никакого эффекта.Каков наилучший способ обновить элемент дерева, чтобы появился новый значок?
Спасибо
public void modified()
{
FormTreeItem workingItem;
;
super();
//find the current item
workingItem = FormTreeControl.getItem(FormTreeControl.getSelection());
//update the value
workingItem.Image(1);
//update the item in the list
FormTreeControl.setItem(workingItem);
}
Решение
Нашел пару проблем здесь:
1.Так и не нашел способа эффективно обновить значок на элементе дерева.
2.Обнаружил, что некоторые объекты управления деревом не инициализируются при попытке добавления / удаления из метода источника данных, поэтому удаление элементов приводит к ошибкам Object Not Initialized.
Исправил это с помощью:
1.Создайте новый элемент (добавьте идентификатор старого элемента).
2.Удалите старый элемент.
3.Выберите новый элемент.
3.Переместите метод из источника данных в фактический элемент управления формой.
Вот код, который сработал у меня:
public boolean modified()
{
boolean ret;
FormTreeItem workingItem = FormTreeControl.getItem(currentEditingIdx);
TreeItemIdx newItemIdx;
;
ret = super();
//create a new item
newItemIdx = SysFormTreeControl::addTreeItem(FormTreeControl, workingItem.text(), FormTreeControl.getParent(workingItem.idx()), workingItem.data(), element.imageIdx(ABC_Icon.text()));
//delete the old item
FormTreeControl.delete(currentEditingIdx);
//select the new item
FormTreeControl.selectionChanged(FormTreeControl.getItem(FormTreeControl.getRoot()), FormTreeControl.getItem(newItemIdx), FormTreeSelect::Unknown);
return ret;
}