1

在我的其他方法(数据、文本等)中,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);

}
4

1 回答 1

1

在这里发现了几个问题:
1. 从来没有找到有效更新树项上的图标的方法。
2. 如果您尝试从数据源方法中添加/删除,发现某些树控件对象未初始化,因此删除项目会引发 Object Not Initialized 错误。

通过以下方式修复它:
1. 创建一个新项目(旧项目的 addAfterIdx)。
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;
}
于 2009-12-16T15:55:21.433 回答