Découvrir les listes hiérarchiques en 4D 2004
Date de publication : Février 2005
Par
Jamras KOMONCHAROENSIRI (4D Inc.)
Améliorations de la gestion des listes hiérarchiques avec la version 2004 de 4ème Dimension.
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. Edition 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 -> |
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 :
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)
* 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’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 :
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 :
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 :
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) 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.
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 :
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
__________________________________________________
Copyright © 1985-2008 4D SA - Tous droits réservés
Tous les efforts ont été faits pour que le contenu de cette note technique présente le maximum de fiabilité possible.
Néanmoins, les différents éléments composant cette note technique, et le cas échéant, le code, sont fournis sans garantie d'aucune sorte.
L'auteur et 4D S.A. déclinent donc toute responsabilité quant à l'utilisation qui pourrait être faite de ces éléments, tant à l'égard de leurs
utilisateurs que des tiers.
Les informations contenues dans ce document peuvent faire l'objet de modifications sans préavis et ne sauraient en aucune manière engager
4D SA. La fourniture du logiciel décrit dans ce document est régie par un octroi de licence dont les termes sont précisés par ailleurs dans la
licence électronique figurant sur le support du Logiciel et de la Documentation afférente. Le logiciel et sa documentation ne peuvent être
utilisés, copiés ou reproduits sur quelque support que ce soit et de quelque manière que ce soit, que conformément aux termes de cette
licence.
Aucune partie de ce document ne peut être reproduite ou recopiée de quelque manière que ce soit, électronique ou mécanique, y compris par
photocopie, enregistrement, archivage ou tout autre procédé de stockage, de traitement et de récupération d'informations, pour d'autres buts
que l'usage personnel de l'acheteur, et ce exclusivement aux conditions contractuelles, sans la permission explicite de 4D SA.
4D, 4D Calc, 4D Draw, 4D Write, 4D Insider, 4ème Dimension ®, 4D Server, 4D Compiler ainsi que les logos 4e Dimension, sont des marques
enregistrées de 4D SA.
Windows,Windows NT,Win 32s et Microsoft sont des marques enregistrées de Microsoft Corporation.
Apple, Macintosh, Power Macintosh, LaserWriter, ImageWriter, QuickTime sont des marques enregistrées ou des noms commerciaux de Apple Computer,Inc.
Mac2Win Software Copyright © 1990-2002 est un produit de Altura Software,Inc.
4D Write contient des éléments de "MacLink Plus file translation", un produit de DataViz, Inc,55 Corporate drive,Trumbull,CT,USA.
XTND Copyright 1992-2002 © 4D SA. Tous droits réservés.
XTND Technology Copyright 1989-2002 © Claris Corporation.. Tous droits réservés ACROBAT © Copyright 1987-2002, Secret
Commercial Adobe Systems Inc.Tous droits réservés. ACROBAT est une marque enregistrée d'Adobe Systems Inc.
Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires
respectifs.
__________________________________________________
 
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.
|