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 に答える