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

Jamras KOMONCHAROENSIRI

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

- Titre : Découvrir les listes hiérarchiques en 4D 2004

- Auteur : Jamras KOMONCHAROENSIRI

- Parution : 1 février 2005

- Licence : 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.

Sommaire

- I. Introduction

- II. Commandes CHANGER PROPRIETES LISTE et LIRE PROPRIETES LISTE

- III. Commandes CHANGER PROPRIETES ELEMENT et LIRE PROPRIETES ELEMENT

- IV. Commandes CHANGER ELEMENT et INFORMATION ELEMENT

- V. Commande Element parent

- VI. Commande Nombre elements

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

- SELECTIONNER ELEMENTS PAR REFERENCE

- SELECTIONNER ELEMENTS PAR POSITION

- VIII. Commande Elements selectionnes

- IX. Édition par l'utilisateur

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

- XI. Conclusion

- XII. Base exemple

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

Énumé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 :

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 changements 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 :

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

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

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

où 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.

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’appels à 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 :

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

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 :

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

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 :

1. TABLEAU ENTIER LONG (arrayRef;3)

2. arrayRef{1}:=11 ` 11 est le numéro de référence de A-1

3. arrayRef{2}:=13 ` 13 est le numéro de référence de A-3

4. arrayRef{3}:=20 ` 20 est le numéro de référence de B

5. SELECTIONNER ELEMENTS PAR REFERENCE (hlist;20;arrayRef)

6. `On désigne l’élément dont le numéro de référence est 20 (B) comme élément courant

7. REDESSINER LISTE (hlist)

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 :

1. TABLEAU ENTIER LONG (arrayPosition;3)

2. arrayPosition {1}:=2 ` A-1 est positionné en 2

3. arrayPosition {2}:=4 ` A-3 est positionné en 4

4. arrayPosition {3}:=7 ` B est positionné en 7

5. SELECTIONNER ELEMENTS PAR POSITION (hlist;4; arrayPosition)

6. `On désigne l’élément en position 4 (A-3) comme étant l’élément courant

7. REDESSINER LISTE (hlist)

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) ont été ajoutés à 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 - Édition 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.

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 :

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é :

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 :

1. C_ENTIER LONG ($selectitempos)

2. $selectitempos:=Elements selectionnes(HList)

3. Si ($selectitempos>0)

4. EDITER ELEMENT(HList;$selectitempos)

5. 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.

Évé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