Pour qu’une table hiérarchique apparaisse triée :
Fin d'initialisation de TABLE_Ensemble
TABLE_Ensemble.Trie("+COL_Ordre")
BTN_Monter
SI DeplacerBranche(MONTER) ALORS
gpclVue.AValider()
FIN
Procédure DeplacerBranche
On travaille à l’envers pour le déplacement des branches.
- On se sert de la table hiérarchique pour gérer les déplacement.
- On met ensuite à jour la mémoire.
Normalement, on met d’abord à jour la mémoire et on réaffiche mais le déplacement de branches en mémoire est complexe.
La colonne COL_RefPere
doit exister dans la table hiérarchique.
Cela permet de limiter le déplacement entre « frères » d’une même branche.
PROCÉDURE DeplacerBranche(eSens est un ESensDeplacement) : booléen
nIndex est un entier
nIndexSource est un entier = TableSelect(TABLEH_Branche)
nIndexDestination est un entier
SELON eSens
CAS MONTER
POUR nIndex = nIndexSource-1 _À_ 1 PAS -1
SI TABLEH_Branche[nIndex].COL_RefPere = TABLEH_Branche[nIndexSource].COL_RefPere ALORS
nIndexDestination = nIndex
SORTIR
FIN
FIN
CAS DESCENDRE
POUR nIndex = nIndexSource+1 _À_ TABLEH_Branche..Occurrence
SI TABLEH_Branche[nIndex].COL_RefPere = TABLEH_Branche[nIndexSource].COL_RefPere ALORS
nIndexDestination = nIndex
SORTIR
FIN
FIN
FIN
SI nIndexDestination > 0 ALORS
TableEchangeBranche(TABLEH_Branche,nIndexSource,nIndexDestination)
ActualiserOrdreBranche()
RENVOYER Vrai
FIN
RENVOYER Faux
Procédure ActualiserOrdreBranche
PROCÉDURE ActualiserOrdreBranche()
taOrdre est un tableau associatif (*, *, wlEntier) d'entiers
POUR TOUTE LIGNE nIndex DE TABLEH_Branche
taOrdre[TABLEH_Branche[nIndex].COL_IdentifiantUnique] = nIndex
FIN
gpclPresentation.ActualiserOrdreBranche(taOrdre)
Dans le présentateur
PROCÉDURE ActualiserOrdreBranche(taOrdre est un tableau associatif d'entiers)
M est un MSoudageCahierBranche dynamique
POUR TOUT M DE p_pclBrancheListe.p_tabModele
M.m_nOrdre = taOrdre[M.IdentifiantUnique]
FIN
// Pas de remise à jour de l'affichage
Pas de remise à jour de l’a vue puisqu’elle est déjà à jour.
Cela permet de la garder fluide.