Formulaire de sortie modifiable par l'utilisateur

Larry Sharpe

Cette note technique utilise plusieurs possibilités de 4D 2004 :

1. Permettre aux utilisateurs de choisir les champs utilisés dans un formulaire de sortie ;
2. Déplacer des variables dans la fenêtre pour afficher les champs et formats choisis par l'utilisateur ;
3. Utiliser les vues dans l'éditeur de formulaires ;
4. Utiliser des pointeurs pour écrire du code générique pour la gestion des fonctions usuelles sur un choix de colonnes.

Une évolution de cette note inclura la possibilité de stocker les choix de l'utilisateur pour l'affichage des colonnes dans une table de préférences. ♪

- Titre : Formulaire de sortie modifiable par l'utilisateur

- Auteur : Larry Sharpe

- Parution : 1 avril 2006

- Licence : Ce document est issu de https://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

- Introduction

- La base exemple

- Le code exemple

- La structure

- Les formulaires

- Les méthodes

- Conclusion

- Télécharger la base exemple

Introduction

Dans cette note technique, je montre comment créer un formulaire de sortie qui permet à l'utilisateur final de choisir le champ affiché dans chacune des colonnes disponibles. Cela n'est pas limité au choix du champ utilisé, mais traite aussi les en-têtes de colonnes, le formatage des champs dates, heures, nombres ou booléens et l'alignement (gauche, centré, à droite) de chaque colonne. Tous ces réglages sont mémorisés dans une table de préférences dont le fonctionnement est expliqué dans la note technique suivante.

La base exemple

Il y a trois utilisateurs : Designer, Administrator et Test User. Seul l'utilisateur Designer possède un mot de passe qui est : designer (pour afficher la fenêtre des mots de passe et permettre de changer d'utilisateur).

La base exemple utilise la table [Personnes], les autres tables étant utilisées dans les deux notes suivantes. Cette table comporte beaucoup des champs standards dont les utilisateurs ont besoin dans une table des personnes (mais pas tous) et inclut quelques champs supplémentaires pour le stockage de données de type date, heure, numérique et booléen.

À la première ouverture du formulaire de sortie, il a une configuration par défaut de champs, alignements, largeurs de colonnes et en-tête. Vous pouvez utiliser le champ que vous voulez dans chacune des six colonnes en le choisissant dans le pop-up situé au-dessus de chaque colonne. Une fois le champ choisi pour cette colonne, l'utilisateur peut faire :

· Contrôle-clic sur l'en-tête pour fixer le formatage de la date, de l'heure, du nombre ou du booléen ;
· Option-clic sur l'en-tête de colonne pour fixer l'alignement, à gauche, centré ou à droite ;
· Commande-clic sur l'en-tête de colonne pour modifier le libellé qui est par défaut le nom du champ ;
· Clic sur l'en-tête de colonne fait un tri croissant des enregistrements sur cette colonne ;
· Double-clic ou clic droit un tri décroissant.

Lorsque la fenêtre du formulaire de sortie est refermée, tous les réglages de l'utilisateur sont sauvegardés pour être réutilisés à la réouverture de la fenêtre.

Le code exemple

La structure

Le premier champ de la table [Personnes] est un identifiant, défini comme invisible, qui n'est ni montré ni autorisé dans le formulaire de sortie. Consultez le trigger pour voir en détail comment on procède. Tous les autres champs sont disponibles pour figurer dans le formulaire de sortie.

Les formulaires

Il y a deux formulaires pour la table [Personnes], « Input » et « Output ». Le formulaire « Input » est un formulaire standard d'entrée de données, sans programmation particulière.

Le formulaire « Output » contient six ensembles de quatre variables groupées par numéro, les noms de colonnes sont sColumnName1 à 6, les valeurs de colonnes sont sColumnValue1 à 6, les pop-ups de colonnes sont asColumnPopup1 à 6 et les séparateurs sont oColumnSplitter1 à 6. Toutes ces variables sont déplacées et dimensionnées par programmation lorsque le formulaire est appelé par l'utilisateur ; nous allons y venir. Le point important à noter sur le placement des variables est qu'elles sont déplacées et redimensionnées horizontalement, mais pas verticalement. Assurez-vous qu'elles soient bien alignées verticalement.

Notons au passage une propriété commode de 4D 2004 qui est de pouvoir placer les objets d'un formulaire dans différentes vues du formulaire. Dans cet exemple, il y a quatre niveaux de vues :

· le niveau 1 contient les boîtes de couleurs et les lignes ;
· le niveau 2 contient le texte d'information ;
· le niveau 3 contient les variables utilisées pour l'affichage et l'utilisation des champs ;
· et le niveau 4 contient les boutons d'ajout et de suppression.

Avoir les différents types d'objets situés dans différentes vues du même formulaire vous permet de sélectionner des objets en relation sans sélectionner en même temps un objet d'une autre catégorie. Ce n'est pas nécessaire pour cette note technique, mais je trouve que c'est une fonction très pratique de 4D 2004.

Le formulaire de sortie a sa méthode formulaire. Dans cette méthode formulaire, nous appelons la méthode projet Output_Columns lors des événements formulaire appropriés pour pouvoir mettre en place les colonnes stockées, utilisées ou modifiées selon les besoins. La méthode Output_Columns est décrite plus en détail quelques paragraphes plus bas.

Les méthodes

Il y a plusieurs emplacements où se trouvent les méthodes et formulaires utilisés dans cette note technique.

· La méthode base Sur ouverture s'exécute lors de l'ouverture de la base et appelle, notamment, les deux méthodes projet qui concernent cet exemple.

· L'instruction Output_Columns (« Startup ») appelle la méthode projet Output_Columns décrite ci-dessous.

· People démarre un nouveau process qui ouvre le formulaire [Personnes]Output et exécute la commande MODIFIER SELECTION.

· Le trigger de la table [Personnes] est exécuté sur l'événement moteur Sur sauvegarde nouvel enregistrement. Cet événement se produit à chaque création d'enregistrement, que ce soit par la saisie d'un utilisateur, par import ou par programmation. Le champ ID est déclaré indexé, unique, invisible et non modifiable en structure.

LA METHODE PROJET Output_columns

Cette méthode contient tout le code nécessaire pour cette base exemple. Il pourrait être exécuté dans plusieurs méthodes distinctes, mais je trouve que l'on a tout dans un Au cas où. C'est plus facile à comprendre et à transférer dans une autre structure. Regardez le code lui-même pour des commentaires plus spécifiques à chaque section.

code 4D : méthode Output_columns, section 'Au cas où'

:($command= "Startup")

Cette section du code est appelée dans la méthode base Sur ouverture. En général, elle est exécutée une fois au démarrage et crée les variables interprocess utilisées par le reste du code. Vous pouvez ajouter d'autres formats d'affichage pour les nombres et les booléens si besoin. Les tableaux pour les dates et les heures sont ceux utilisés par 4D et ne doivent pas être modifiés.

code 4D : méthode Output_columns, section 'Au cas où'

:($command= "DefaultColumns")

Cette section est celle où vous fixez toutes vos colonnes par défaut et définissez toutes les variables utilisées dans cette note technique. Si vous voulez spécifier plus ou moins de colonnes ou une autre table, c'est la seule section de code à modifier. Toutes les autres sections de cette méthode l'utilisent et n'ont pas à être changées. Le seul autre endroit à mettre à jour est le formulaire de sortie lui-même, dans lequel vous devez ajouter ou supprimer les quatre variables utilisées pour chaque colonne.

code 4D : méthode Output_columns, section 'Au cas où'

:($command= "OnLoadForm")

Ce code est exécuté lorsque le formulaire est chargé pour la première fois. Il construit les variables popup et détermine l'emplacement de toutes les variables de colonnes selon ce qui a été précédemment sauvegardé, soit les valeurs par défaut, soit les dernières valeurs stockées.

code 4D : méthode Output_columns, section 'Au cas où'

:($command= "OnUnloadForm")

Lorsque vous fermez la fenêtre du formulaire de sortie, cette section du code est exécutée et elle enregistre les réglages de l'utilisateur final pour les colonnes, les champs, les emplacements, tailles, formatages, etc. La note technique suivante montrera comment ces réglages sont stockés dans une table de préférences du fichier de données et réutilisés au chargement de la base.

code 4D : méthode Output_columns, section 'Au cas où'

:($command="OnDisplayRow")

Cette section du code est exécutée une fois par ligne pour affecter à chaque colonne la valeur et le format souhaité selon le champ affiché. Ne rendez pas cette partie du code trop lente à exécuter, ou vos utilisateurs constateront un ralentissement à chaque ouverture de la fenêtre. 4D a l'avantage de ne recalculer le code que pour les lignes ajoutées lorsqu'on défile la liste, mais pas pour tout. Lorsqu'on ferme le formulaire d'entrée, toutes les lignes sont recalculées.

code 4D : méthode Output_columns, section 'Au cas où'

:($command= "HeaderClicked")

Il y a quatre sections dans ce code qui exécutent les actions suivantes lorsque vous cliquez sur un en-tête de colonne avec ces touches maintenues :

· Contrôle clic : choisissez un format pour un champ date, heure, numérique ou booléen ;
· Option clic : choisissez l'alignement (à gauche, centré, à droite) pour la colonne ;
· Majuscule clic : entrez le texte d'en-tête de colonne ;
· Clic : tri croissant sur la colonne cliquée ;
· Double clic ou clic droit : tri décroissant sur la colonne cliquée.

code 4D : méthode Output_columns, section 'Au cas où'

:($command= "PopupSelected")

Lorsque l'utilisateur sélectionne un nouveau champ dans le popup d'une colonne, la donnée est modifiée pour afficher ce nouveau champ. Le nom de la colonne, le format et l'alignement qui avaient été affectés sont remplacés par leur valeur par défaut.

Conclusion

Cette note technique utilise plusieurs possibilités de 4D 2004 :

1. Permettre aux utilisateurs de choisir les champs utilisés dans un formulaire de sortie ;
2. Déplacer des variables dans la fenêtre pour afficher les champs et formats choisis par l'utilisateur ;
3. Utiliser les vues dans l'éditeur de formulaires ;
4. Utiliser des pointeurs pour écrire du code générique pour la gestion des fonctions usuelles sur un choix de colonnes.

Une évolution de cette note inclura la possibilité de stocker les choix de l'utilisateur pour l'affichage des colonnes dans une table de préférences.

Télécharger la base exemple

Télécharger la base exemple.