Developpez.com - 4D
X

Choisissez d'abord la catégorieensuite la rubrique :


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.

info 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

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.


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

info 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é.

info 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

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



info 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é.
info 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

Téléchargez la base exemple


__________________________________________________
Copyright © 1985-2009 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.
__________________________________________________
 



Valid XHTML 1.1!Valid CSS!

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.
Contacter le responsable de la rubrique 4D