Inclusion d`un jeu d`onglets dans un autre jeu d`onglets Résumé 4D
Transcription
Inclusion d`un jeu d`onglets dans un autre jeu d`onglets Résumé 4D
Inclusion d’un jeu d’onglets dans un autre jeu d’onglets Par Steve HARTMAN, MCP, Information System, 4D Inc. Note technique 4D-200304-12-FR Version 1 Date 1 Avril 2003 Résumé Un jeu d’onglet est un tableau ou une liste hiérarchique à 1 niveau. Dans cette note, nous allons, en fonction des accès, activer ou désactiver certains onglets sur une page elle-même gérée par un onglet. 4D Notes techniques Copyright © 1985-2004 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 d u logiciel décrit dans ce document est régie par u n octroi de licence dont les termes sont précisés par ailleurs dans la licence électronique figurant sur le support d u Logiciel et de la Documentation afférente. Le logiciel et sa documentation ne peuvent être utilisés, copiés o u 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 o u recopiée de quelque manière que ce soit, électronique o u mécanique, y compris par photocopie, enregistrement, archivage o u 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 o u 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. 1/8 Inclusion d’un jeu d’onglets dans un autre jeu d’onglets Introduction Depuis leur introduction en version 6, les onglets sont pour le développeur un outil très intéressant car ils sont faciles à mettre en œuvre et de plus esthétiques. Ils lui permettent de montrer des informations différentes selon les clics de l’utilisateur. Ils peuvent être utilisés pour naviguer entre les pages d’un formulaire ou pour regrouper des informations par catégories. Les onglets peuvent être désactivés individuellement. Les onglets – intuitifs pour l’utilisateur – sont très utilisés pour gérer les formulaires multipages. Ils ne consomment que peu de mémoire et s’exécutent rapidement. Les onglets sont des tableaux ou des listes (Les énumérations sont des listes à 1 niveau). Un des avantages de recourir à une liste est de pouvoir détecter quel élément a été choisi en utilisant Element selectionne qui retournera le numéro de référence de l’élément alors utilisable par d’autres commandes comme CHANGER PROPRIETES LISTE. Avec ce numéro vous pouvez activer ou désactiver un onglet en fixant la propriété saisissable de l’élément à Vrai ou Faux. Un autre avantage est de permettre au développeur de faire du code spécifique selon l'état de visibilité de l'onglet comme le montre plus loin cette note. À propos de la base de démonstration Pour tester notre système d’onglet, prenons une base de données avec des accès limités selon la catégorie à laquelle appartient l’utilisateur : - Les ressources humaines - La comptabilité - La direction - Systèmes d'information Dans cette base il serait possible de contrôler les accès à certaines parties en grisant, c’est-à-dire en désactivant, certains onglets. Ainsi un département de l’entreprise accéderait à certaines informations sans pour autant pouvoir voir celles d’un autre. Ouvrons la base « Onglets_Employés-Demo » et voyons les mots de passe : Utilisateur Développeur Administrateur Ressources humaines Comptabilité Direction Systèmes d'information Mot de passe 4d « laisser vide » « laisser vide » « laisser vide » « laisser vide » « laisser vide » Exemple 1 : Sélectionnez « Ressources humaines » et validez. Allez au menu Fichier - > Voir employés. Double-cliquez sur la fiche de John DOE. Remarquez que vous n’avez accès qu’à des données sur le personnel, des données de la direction ainsi qu’à des informations sur le salaire. Annulez pour sortir du formulaire Entrée et cliquez « sortir » pour retourner à l’écran d’accueil. À présent changez d’utilisateur : Fichier - > Changer utilisateur. Demandez « Comptabilité » et répétez les 3 2/8 étapes précédentes. Vous avez désormais accès aux données du personnel, aux données de la direction ainsi qu’à des informations de comptabilité. Répétez l’opération pour chaque utilisateur et notez les différences d’accès aux informations. Voici le code qui gère le système d’onglets dessiné en page zéro du formulaire : Si (Evenement formulaire=Sur chargement ) Au cas ou : (Utilisateur courant="Ressources Humaines") CHANGER PROPRIETES ELEMENT(vTab;3;Faux;Normal ;0) CHANGER PROPRIETES ELEMENT(vTab;4;Faux;Normal ;0) : (Utilisateur courant="Comptabilité") CHANGER PROPRIETES ELEMENT(vTab;2;Faux;Normal ;0) CHANGER PROPRIETES ELEMENT(vTab;4;Faux;Normal ;0) : (Utilisateur courant="Direction") CHANGER PROPRIETES ELEMENT(vTab;3;Faux;Normal ;0) : (Utilisateur courant="Systèmes Information") CHANGER PROPRIETES ELEMENT(vTab;2;Faux;Normal ;0) CHANGER PROPRIETES ELEMENT(vTab;3;Faux;Normal ;0) Fin de cas Fin de si Maintenant utilisons un nouveau système d’onglets à l’intérieur d’une des pages (donc elle-même contrôlée par onglet) afin de présenter un département de l’entreprise. Ce nouvel onglet permettra de s’affranchir de la création de nouveaux formulaires saisie et liste. Exemple 2 : Changez d’utilisateur : Fichier - > Changer utilisateur. Demandez Systèmes Information. Validez. Allez à Fichier - > Voir employés. Double-cliquez sur la fiche de John DOE. Allez à l’onglet Systèmes Information. Comme vous le constatez il y a un autre jeu d’onglets dans la page. Cliquez sur chaque onglet de ce nouveau jeu et constatez que l’onglet devenu courant s’estompe. Le code qui régit ceci est une méthode objet (objet en page 4) : Au cas ou : (Evenement formulaire=Sur chargement ) ` pour la 1re fois, Iniatialisation sur Systèmes d'information LLastTab:=1 ` Set the First tab as the currently viewed tab LIRE PROPRIETES ELEMENT(vIS_Tab;LLastTab;$fEnterble;$LFont;$LIcon) CHANGER PROPRIETES ELEMENT(vIS_Tab;LLastTab;Faux;$LFont;$LIcon) CHOIX VISIBLE(*;"Group@";Faux) CHOIX VISIBLE(*;"Group1@";Vrai) : (Evenement formulaire=Sur clic souris ) ` on met à jour quel onglet doit être actif et celui qui ne doit pas l'être LIRE PROPRIETES ELEMENT(vIS_Tab;LLastTab;$fEnterble;$LFont;$LIcon) CHANGER PROPRIETES ELEMENT(vIS_Tab;LLastTab;Vrai;$LFont;$LIcon) LLastTab:=Element selectionne(vIS_Tab) ` Update the tab number ` Désactive l'onglet qui vient d'être désactivé LIRE PROPRIETES ELEMENT(vIS_Tab;LLastTab;$fEnterble;$LFont;$LIcon) CHANGER PROPRIETES ELEMENT(vIS_Tab;LLastTab;Faux;$LFont;$LIcon) 3/8 CHOIX VISIBLE(*;"Group@";Faux) CHOIX VISIBLE(*;"Group"+Chaine(LLastTab)+"@";Vrai) Fin de cas Dans cette base de données, Systèmes d'information utilise un second jeu d’onglets contrôlant diverses informations relatives aux employés et à leurs privilèges. (Figures 1, 2, 3) Figure 1 Cet onglet stocke les informations relatives aux comptes eMail des employés. La figure 1a nous montre à quoi ressemble l’onglet en structure : figure1a 4/8 Figure 2. La figure 2 gère les comptes FTP. Les objets sont décrits dans la figure 2a : Figure 2a Figure 3 Pour terminer, les informations sur les comptes propres à la base sont stockées dans le troisième onglet de la figure 3. Les objets de cet onglet sont montrés par la figure 3a : 5/8 Figure 3a L’énumération qui est associée à cet onglet est décrite en figure 4. Des icônes ont été ajoutées à Systèmes Information afin de montrer comment créer une interface plus attractive. Figure 4 Selon l’onglet qui est choisi, les objets peuvent être visibles ou non. Les objets ont été groupés en structure afin de faciliter leur positionnement dans le formulaire. Un revers à cette option : la commande CHOIX VISIBLE ne fonctionne pas pour un groupe d’objets. Aussi les objets sont nommés de manière bien précise pour chaque page de l’onglet puis groupés afin d’en faciliter le positionnement en structure. Dans notre exemple chaque nom d’objet d’un même groupe commence par le nom du groupe. Par exemple, chaque objet situé en page 1 (cf. figure ci-dessous) commence par Group1 : Group1Emp_EmailloginCheckbox. Le groupe 1 Chaque objet de la page 2 voit son nom débuter par Group2 et est rassemblé dans un groupe nommé Group 2. 6/8 Le groupe 2 Même chose avec la page 3 où les noms d’objets débutent par Group3 et le groupe est Group 3 (notez l’espace). Le groupe 3 Une fois les groupes constitué, ils sont positionnés selon la figure 5. Figure 5 Affiché ains,i le formulaire serait somme toute peu lisible. Pour remettre de l’ordre dans ce fouillis la commande CHOIX VISIBLE est ajoutée au code que voici : Au cas ou : (Evenement formulaire=Sur chargement ) 7/8 ` au chargement on se place tout de suite sur l’onglet « email » LLastTab:=1 ` Set the First tab as the currently viewed tab LIRE PROPRIETES ELEMENT(vIS_Tab;LLastTab;$fEnterble;$LFont;$LIcon) CHANGER PROPRIETES ELEMENT(vIS_Tab;LLastTab;Faux;$LFont;$LIcon) CHOIX VISIBLE(*;"Group@";Faux) CHOIX VISIBLE(*;"Group1@";Vrai) : (Evenement formulaire=Sur clic souris ) ` on met à jour quel onglet doit être actif et celui qui ne doit pas l'être LIRE PROPRIETES ELEMENT(vIS_Tab;LLastTab;$fEnterble;$LFont;$LIcon) CHANGER PROPRIETES ELEMENT(vIS_Tab;LLastTab;Vrai;$LFont;$LIcon) LLastTab:=Element selectionne(vIS_Tab) ` Update the tab number ` Déactive l'onglet qui vient d'être déactivé LIRE PROPRIETES ELEMENT(vIS_Tab;LLastTab;$fEnterble;$LFont;$LIcon) CHANGER PROPRIETES ELEMENT(vIS_Tab;LLastTab;Faux;$LFont;$LIcon) CHOIX VISIBLE(*;"Group@";Faux) CHOIX VISIBLE(*;"Group"+Chaine(LLastTab)+"@";Vrai) Fin de cas On perçoit l’intérêt d’avoir une charte de "nommage" des objets. Le caractère joker @ permet de rendre invisible tous les objets simultanément puis le groupe d’objets que l’on souhaite utiliser est rendu visible en utilisant LIRE PROPRIETES ELEMENT qui définit le numéro de page. Conclusion Les onglets sont une manière très puissante d’associer multipage et multiformulaire. Ils sont peu gourmands en mémoire, rapides, intuitifs et visuellement agréables. Notre exemple nous montre cinq onglets cliquables pour aller vers autant de pages où sont gérées des opérations locales. En page quatre, un autre jeu d’onglets est là pour contrôler des informations propres au département de la société. Les onglets permettent au développeur de présenter des informations changeant au gré des clics utilisateur. Les onglets permettent de naviguer de page en page d’un formulaire ou de montrer des informations par catégories. Un jeu d’onglet est un tableau ou une liste hiérarchique à 1 niveau. Dans le cas d’une liste on détectera l’élément cliqué grâce à Element selectionne qui retournera le numéro de référence de l’élément alors utilisable par d’autres commandes comme CHANGER PROPRIETES LISTE. Notre exemple nous montre aussi que les onglets peuvent être désactivés de façon sélective en fixant la propriété saisissable de l’élément à Vrai ou Faux. 8/8