문제

다른 방법 (데이터, 텍스트 등)에서 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. DataSource 메소드에서 추가/삭제하려고 시도하면 일부 트리 제어 객체가 초기화되지 않으므로 항목 삭제는 객체를 초기화되지 않은 오류가 아닌 오류가 발생하지 않습니다.

수정 : :
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;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top