代码之家  ›  专栏  ›  技术社区  ›  Brad

Axapta:更改图像后更新FormTreeControl

  •  1
  • Brad  · 技术社区  · 16 年前

    在我的其他方法(数据、文本等)中,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 回复  |  直到 9 年前
        1
  •  1
  •   Brad    16 年前

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

    固定:
    1.创建新项(旧项的addAfterIDX)。
    2.第2条。删除旧项目。
    三。选择新项目。
    三。将方法从数据源移动到实际表单控件。

    以下是适用于我的代码:

    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;
    }