Découvrir les listes hiérarchiques en 4D 2004

Améliorations de la gestion des listes hiérarchiques avec la version 2004 de 4ème Dimension.

Article lu   fois.

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Introduction

Les listes hiérarchiques sont des objets qui permettent d’afficher de manière élégante et efficace des données structurées. 4D offre des commandes qui permettent de contrôler et manipuler de tels objets. Certaines de ces commandes ont été mises à jour avec la version 4D 2004. Dans cette note technique nous allons présenter les changements apportés et étudier quelques exemples de ce qui peut être fait grâce à ces améliorations.

II. Commandes CHANGER PROPRIETES LISTE et LIRE PROPRIETES LISTE

CHANGER PROPRIETES LISTE (liste; apparence{; icône{; hauteurLigne{; doubleClic{; multiSélection{; modifiable}}}}})

LIRE PROPRIETES LISTE (liste; apparence{; icône{; hauteurLigne{; doubleClic{; multiSélection{; modifiable}}}}})

Deux paramètres (en rouge/gris clair à l'impression) ont été ajoutés à ces commandes.

Nouveau paramètre Type Description
multiSélection Entier long -> Sélections
0 = interdire (défaut)
1 = autoriser
modifiable Entier long -> Enumération
0 = non (défaut)
1 = oui (par défaut, 4D 2004.1)



Passer la valeur 1 au paramètre multiSélection permet à l'utilisateur de sélectionner plusieurs éléments dans une même liste :

Image non disponible

Les sélections multiples peuvent être effectuées à l'aide des combinaisons de touches Maj+clic pour une sélection continue ou Ctrl+clic (Windows) / Commande+clic (MacOS) pour une sélection discontinue.

Le paramètre modifiable permet d'indiquer si la liste sera modifiable par l'utilisateur lorsqu'elle sera affichée sous forme d'énumération associée à un champ ou une variable en saisie. Lorsque l'énumération est modifiable, un bouton Modifier est inséré dans la fenêtre d'énumération et l'utilisateur peut ajouter, supprimer et trier les valeurs via un éditeur spécifique.

Pour que les changement soient pris en compte la commande STOCKER LISTE doit être appliquée après CHANGER PROPRIETES LISTE.

Note : référez-vous à l’exemple 1 dans la base "HList_Demo"

III. Commandes CHANGER PROPRIETES ELEMENT et LIRE PROPRIETES ELEMENT

CHANGER PROPRIETES ELEMENT (liste; réfElément | *; saisissable; styles; icône{; couleur})

LIRE PROPRIETES ELEMENT (liste; réfElément | *; saisissable{; styles{; icône{; couleur}}})

Deux nouveaux paramètres (en rouge) ont été ajoutés à ces commandes :

Nouveau paramètre Type Description
réfElément | * Entier long | * -> Numéro de référence d'élément ou
0 pour le dernier élément ajouté à la liste ou
* pour l'élément courant de la liste
couleur Entier long -> Valeur de couleur RVB ou
-1 = rétablir couleur originale



Le paramètre * passé dans réfElément fait référence à l’élément courant dans la liste hiérarchique. Si plusieurs éléments ont été sélectionnés, l’élément courant est celui sélectionné en dernier.

Par exemple, imaginons que 4D exécute la commande suivante après que l’utilisateur ait fait une sélection :

LIRE PROPRIETES ELEMENT (vlList;*;vbEnterable;vlStyle;vlIcon)

Image non disponible

* fait référence à A-1 , le seul élément sélectionné dans la liste.

Image non disponible

Si les éléments ont été sélectionnés dans l'ordre suivant : A-1 , A-3 puis A-5, le paramètre * fera référence au dernier élément sélectionné : A-5.

Le paramètre couleur dans CHANGER PROPRIETES ELEMENT doit être au format RVB (un entier long sur 4 bits au format 0x00RRVVBB). Il est également possible d’écrire selon la syntaxe :

   (ValeurRouge << 16)+(ValeurVert << 8)+ValeurBleu

ValeurRouge, ValeurVert, ValeurBleu sont tous les trois compris entre 0 et 255.


Pour aller plus loin dans les formats de couleurs RVB, reportez-vous à la commande FIXER COULEUR RVB :
http://www.4d.fr/documentation/4Ddoc2004/CMF/CMF00628.HTM.


Ce nouveau paramètre couleur vous permet maintenant d'attribuer une couleur spécifique à chaque élément de votre liste.

Image non disponible

Note : référez-vous à l’exemple 2 dans la base "HList_Demo" .

IV. Commandes CHANGER ELEMENT et INFORMATION ELEMENT

Un paramètre alternatif (en rouge) a été ajouté aux deux commandes.


CHANGER ELEMENT (liste; réfElément | *; textElément; nouvelRéf{; sous-liste; déployée})

Nouveau paramètre Type Description
réfElément | * Entier long | * -> Numéro de référence d'élément ou
0 pour le dernier élément ajouté à la liste ou
* pour l'élément courant de la liste



INFORMATION ELEMENT (liste; positionElém | *; numElém; textElém{; sous_Liste{; déployé}})

Nouveau paramètre Type Description
positionElém | * Numérique | * -> Position de l'élément dans la ou les liste(s) déployée(s) ou
* pour l'élément courant de la liste



Le paramètre * est utilisé pour faire directement référence à l’élément courant de la liste. Ce nouveau paramètre réduit le nombre d’appel à la commande Elements selectionnes (notez que la commande s’écrit à présent au pluriel) rendant le code plus compact.

Note : référez-vous à l’exemple 3 dans la base "HList_Demo".

V. Commande Element parent

Un paramètre alternatif (en rouge) a été ajouté.

Element parent (liste; réfElément | *) -> Entier long

Nouveau paramètre Type Description
réfElément | * Entier long | * -> Numéro de référence d'élément ou
* pour l'élément courant de la liste



Si vous passez *, la commande s'applique à l'élément courant de la liste. Si plusieurs éléments ont été sélectionnés manuellement, alors le dernier sélectionné est l’élément courant.


Exemple d’une sélection unitaire :

Image non disponible

Dans ce cas, l'exécution de la commande Element parent (hList;*) retournera le numéro de référence de A.


Exemple d’une sélection multiple dans un ordre précis : A1-A3-B2

Image non disponible

Ici, Element parent (hList;*) retournera le numéro de référence de B, B-2 étant le dernier élément à avoir été sélectionné.

Note : référez-vous à l’exemple 4 dans la base "HList_Demo".

VI. Commande Nombre elements

Un paramètre (en rouge) a été ajouté :

Nombre elements (liste {;*}) -> Entier long

Nouveau paramètre Type Description
* * -> Si omis (défaut) : Retourne les éléments visibles (déployés) dans la ou les liste(s)
Si spécifié : Retourne tous les éléments



La commande Nombre elements accepte dorénavant le paramètre *. Lorsque ce paramètre est passé, la commande retourne le nombre total d'éléments présents dans la liste, quel que soit son état courant déployé/contracté.
Lorsque ce paramètre est omis, la commande retourne le nombre d'éléments déployés, en d'autres termes, visibles, en fonction de l'état actuel de la liste et de ses sous-listes.


Exemple :


Image non disponible
Dans ce cas, Nombre elements (list) et Nombre elements (list ;*) retourneront tous les deux 9


Image non disponible
Alors qu'ici Nombre elements (list) retournera 4 et Nombre elements (list ;*) retournera 9

Note : référez-vous à l’exemple 5 dans la base "HList_Demo".

VII. Commandes SELECTIONNER ELEMENTS PAR REFERENCE et SELECTIONNER ELEMENTS PAR POSITION

Veuillez noter que les commandes SELECTIONNER ELEMENT PAR REFERENCE et SELECTIONNER ELEMENT ont respectivement été renommées SELECTIONNER ELEMENTS PAR REFERENCE et SELECTIONNER ELEMENTS PAR POSITION afin de souligner la capacité d’utilisation des sélections multiples dans 4D 2004.

SELECTIONNER ELEMENTS PAR REFERENCE

Un paramètre (en rouge) a été ajouté à la commande SELECTIONNER ELEMENTS PAR REFERENCE :

SELECTIONNER ELEMENTS PAR REFERENCE (liste; réfElément{; tabRéfs})

Nouveau paramètre Type Description
tabRéfs Tab entier long -> Tableau de numéros de référence d'éléments



Exemple :

TABLEAU ENTIER LONG (arrayRef;3)
   arrayRef{1}:=11 ` 11 est le numéro de référence de A-1
   arrayRef{2}:=13 ` 13 est le numéro de référence de A-3
   arrayRef{3}:=20 ` 20 est le numéro de référence de B
SELECTIONNER ELEMENTS PAR REFERENCE (hlist;20;arrayRef)
`On désigne l’élément dont le numéro de référence est 20 (B) comme élément courant
REDESSINER LISTE (hlist)


Image non disponible

SELECTIONNER ELEMENTS PAR POSITION

Un paramètre (en rouge) a été ajouté à la commande SELECTIONNER ELEMENTS PAR POSITION :

SELECTIONNER ELEMENTS PAR POSITION (liste; positionElém{; tabPositions})

Nouveau paramètre Type Description
tabPositions Tab numérique -> Tableau de positions dans la ou les liste(s) déployée(s)



Exemple :

TABLEAU ENTIER LONG (arrayPosition;3)
   arrayPosition {1}:=2 ` A-1 est positionné en 2
   arrayPosition {2}:=4 ` A-3 est positionné en 4
   arrayPosition {3}:=7 ` B est positionné en 7
SELECTIONNER ELEMENTS PAR POSITION (hlist;4; arrayPosition)
`On désigne l’élément en position 4 (A-3) comme étant l’élément courant
REDESSINER LISTE (hlist)


Image non disponible

Note : référez-vous à l’exemple 6 dans la base "HList_Demo".

VIII. Commande Elements selectionnes

Veuillez noter que la commande Element selectionne a été renommée Elements selectionnes afin de souligner la capacité d’utilisation des sélections multiples dans 4D 2004.

Deux paramètres (en rouge) a été ajouté à la commande :

Elements selectionnes (liste{; tabEléments{; *}}) -> Entier long

Nouveau paramètre Type Description
tabEléments Tab Entier long <- Si * omis : Tableau des positions des éléments sélectionnés parmi la ou les liste(s) déployée(s)
Si * passé : Tableau des références des éléments sélectionnés parmi la ou les liste(s) déployée(s)
* * -> Si omis : Position(s) d'élément(s)
Si passé : Référence(s) d'élément(s)
Résultat Entier long Si * omis : Position de l'élément sélectionné parmi la ou les liste(s) déployée(s)
Si * passé : Référence de l'élément sélectionné.

Note : référez-vous à l’exemple 7 dans la base "HList_Demo".

IX. Edition par l'utilisateur

La version 2004 permet à l'utilisateur de modifier directement le libellé de chaque élément d'une liste hiérarchique, cette fonctionnalité est gérée via la fenêtre liste des propriétés de l'objet. Pour activer manuellement cette propriété, il suffit de cocher la case saisissable dans la section saisie de la liste des propriétés de la liste hiérarchique.

Image non disponible


Quand la liste hiérarchique est affichée en mode "Utilisation" ou "Menus créés", l'utilisateur a la possibilité de modifier le libellé d'un élément en cliquant une première fois sur celui-ci :

Image non disponible

puis en cliquant une deuxième fois et en gardant le bouton de la souris enfoncé pendant environ une seconde. Le libellé apparaît alors en mode inversé (surligné) et il peut être édité :

Image non disponible

Si vous désirez attribuer individuellement la propriété saisissable à un élément d'une liste, vous pouvez utiliser la commande CHANGER PROPRIETES ELEMENT.

Vous pouvez également forcer le mode édition d'un élément d'une liste (indépendamment de sa propriété saisissable ou non-saisissable) en utilisant la commande EDITER ELEMENT.


Exemple :

C_ENTIER LONG ($selectitempos)
   $selectitempos:=Elements selectionnes(HList)
Si ($selectitempos>0)
EDITER ELEMENT(HList;$selectitempos)
Fin de si

X. Nouveaux événements pour les listes hiérarchiques

Trois nouveaux événements ont été ajoutés afin de mieux gérer les actions des utilisateurs : Sur déployer, Sur contracter et Sur nouvelle sélection.

Evénement Clic souris Entrée clavier
Sur déployer / Sur contracter Ouverture / Clôture d'une sous-liste en utilisant les icônes de déploiement
ou
en double cliquant sur une sous-liste non-saisissable
Ouverture / Clôture d'une sous-liste en utilisant les flèches gauche et droite du clavier
Sur nouvelle sélection Sélection d'un nouvel élément Sélection d'un nouvel élément

XI. Conclusion

Cette note technique a pour but de donner une vue d'ensemble des nouvelles fonctionnalités des listes hiérarchiques de la version 2004. Une base exemple démontrant l'utilisation des nouvelles commandes l'accompagne.

XII. Base exemple

Téléchargez la base exemple

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.