Déplacement d’une branche

Gestion du déplacement des branches

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.

  1. On se sert de la table hiérarchique pour gérer les déplacement.
  2. 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.