2009-12-12 6 views
1

Dans mes autres méthodes (données, texte, etc.), la méthode setItem fonctionne correctement pour afficher les modifications apportées à un élément de l'arborescence. Cependant, appeler setItem après avoir modifié l'icône d'un élément ne semble pas avoir d'effet. Quelle est la meilleure façon de mettre à jour l'élément de l'arbre afin que la nouvelle icône apparaisse?Axapta: mise à jour de FormTreeControl après le changement d'image

Merci

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

} 

Répondre

1

trouvé quelques problèmes ici:
1. Jamais trouvé un moyen de mettre à jour l'icône sur un élément de l'arborescence efficace.
2. Certains objets de contrôle d'arborescence n'ont pas été initialisés si vous essayez d'ajouter/de supprimer une méthode de source de données. La suppression d'éléments génère donc des erreurs Objet non initialisé.

Correction de:
1. Créez un nouvel élément (addAfterIdx de l'ancien élément).
2. Supprimez l'ancien élément.
3. Sélectionnez le nouvel élément.
3. Déplacez la méthode de la source de données vers le contrôle de formulaire réel.

Voici le code qui a fonctionné pour moi:

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