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 |
modifiable |
Entier long -> |
Énumération |
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 |
couleur |
Entier long -> |
Valeur de couleur RVB ou |
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)
* 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 |
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 |
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 |
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) |
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 :
2.
3.
4.
5.
6.
7.
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)
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 :
2.
3.
4.
5.
6.
7.
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)
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 omis : Position(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) |
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 :
2.
3.
4.
5.
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.
É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 |
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