Le modèle d'objet CHOIX
Comme le modèle ACCES, le modèle CHOIX complète les fonctionnalités du modèle SCRITERE par les automatismes composants et par un certain nombre de méthodes normalisées. Il diffère du modèle ACCES par son rôle qui est de permettre à l'utilisateur la recherche, puis la sélection d'un enregistrement précis. La sélection provoque la sortie de l'objet et rend le choix effectué à l'objet appelant.
Rappels :
- Les automatismes composants sont pris en charge par le système dès lors que les conventions de la programmation composant sont respectées.
- Les méthodes normalisées ont pour objectif de rendre l'interface utilisateur homogène quel que soit le logiciel utilisé. Dans le cas du modèle CHOIX, le résultat rendu à l'objet appelant est standardisé. Le modèle permet également l'accès à l'objet GESTION du composant.
Liste des déclarations standards
BASE | Base de données | ||
TABLE |
Table principale |
||
ECRAN | Ecran | ||
MENU |
Menu déroulant et barre d'outils. Par défaut, choix.key |
Liste des paramètres
Chaine | Reference | pident | Identifiant de l'enregistrement choisi par l'utilisateur | |
Entier | Reference | erreur | Code de retour |
Liste des variables héritées et contexte de table
Chaine | CodeListe | Code de la liste (par défaut "LST") | ||
Chaine | CodeClassement | Critère de classement de la liste | ||
Contexte | LISTEINDEX | Contexte sur les champs indexés de la table |
Liste des méthodes héritées de SCRITERE
REMPLIT_CLASSEMENT | Met en mémoire la liste des champs indexés | ||
ANALYSE_ECRAN |
Analyse les extensions de l'écran | ||
AJOUTE_CRITERE | Ajout par programme d'un critère | ||
ANALYSE_SAISIE |
Analyse de l'action de l'utilisateur | ||
ACTIVE_REQUETE |
Positionne les filtres sur la table principale | ||
COMPARE_REQUETE |
Compare les critères pour optimiser | ||
POSITIONNE_REQUETE |
Positionne la liste avant réaffichage | ||
ACTIVE_REQUETE_DEFINITIVE |
Transmet les filtres vers un autre objet |
Liste des méthodes spécialisées
VALIDATION | Clic sur le bouton "Valider" (ou touche Entrée) | ||
ABANDON |
Clic sur le bouton "Annuler" (ou touches F3 ou Echap) | ||
AUCUN | Clic sur le bouton "Aucun" | ||
GERER | Appel à l'objet GESTION du composant | ||
<CodeListe>_CHOIX |
Double-clic dans la liste |
Fonctionnement du modèle
En général l'objet CHOIX est appelé depuis la méthode CHOIX de l'interface du composant.
CHOIX dérive du modèle SCRITERE qui est conçu pour faciliter la recherche d'informations. L'interface utilisateur est en général constituée d'un bandeau contenant des critères de recherche et d'une liste affichant les enregistrements de la table principale. Les points forts du modèle sont les suivants :
- L'ergonomie du modèle est particulièrement intuitive pour l'utilisateur
- La programmation est très simple et bénéficie des automatismes composants
- Les critères de filtre sont déduits directement de l'écran
- La simple modification de l'écran permet d'ajouter de nouveaux critères de recherche
Exemple : écran de choix d'un modèle de tarif.
Les déclarations standards du modèle
BASE et TABLE :
Ces déclarations sont indispensables, elles définissent la table principale sur laquelle seront posés les filtres déduits de l'écran. Notez cependant que nous préconisons dans le cas d'une programmation composant de déclarer la base au niveau des déclarations globales du composant.
ECRAN et MENU :
L'écran doit contenir un contrôle de type "liste" affichant les informations de la table principale. Le code de la liste (LST par défaut) peut être redéfini par l'intermédiaire de la variable héritée CodeListe. Afin de minimiser la programmation, le nom de l'écran et celui du menu déroulant ont été normalisés. Le modèle utilise par défaut l'écran CHOIX.ECR et le menu CHOIX.KEY.
Les
écrans, menu déroulants, menus contextuels et bitmaps sont en général
regroupés dans un fichier de ressources appelé GLOBAL. Ce fichier est
déclaré par l'intermédiaire de la déclaration GLOBAL du langage. Il est
cependant inutile d'effectuer la déclaration dans chaque objet. Une déclaration
unique au niveau des déclarations globales du composant est suffisante.
La déclaration REP_OBJ permet de définir les répertoires de recherche
des ressources du composant. Contrairement à la déclaration GLOBAL, cette
déclaration doit être effectuée dans chaque objet. En pratique, elle n'est
utile que pendant les phases de développement et de "relookage"
du produit.
Les méthodes et variables héritées de SCRITERE
Les méthodes et variables héritées du modèle SCRITERE ne sont pas redéfinies par le modèle CHOIX. Pour plus d'informations consultez la documentation du modèle SCRITERE.
Les variables héritées du modèle
pIdent
Cette variable héritée est en fait le premier paramètre reçu par l'objet CHOIX. Cette donnée de type Chaine est passée par référence et reçoit en retour l'identifiant de l'enregistrement sélectionné par l'utilisateur. La valeur reçue au démarrage permet de se positionner sur un enregistrement voulu.
Erreur
Cette variable de type Entier correspond au deuxième paramètre reçu par l'objet CHOIX. Elle est passée par référence et rend à l'appelant une valeur représentative de l'action de l'utilisateur. La valeur vaut 0 en cas de sélection d'un enregistrement, 1 en cas d'abandon et 2 en cas de sélection d'aucun enregistrement. Des explications complémentaires sont fournies ci-dessous.
Les méthodes spécialisées du modèle
Méthode VALIDATION
Elle est déclenchée lorsque l'utilisateur effectue la sélection d'un enregistrement. Elle affecte le paramètre pIdent par l'identifiant de l'enregistrement en cours, elle force le paramètre erreur à zéro et provoque la sortie de l'objet.
Méthode ABANDON
Elle met à vide le paramètre pIdent, force le paramètre erreur à 1 et provoque la sortie de l'objet.
Méthode AUCUN
Elle met à vide le paramètre pIdent, force le paramètre erreur à 2 et provoque la sortie de l'objet. Le choix AUCUN diffère du cas ABANDON par l'utilisation qu'en fera l'appelant. En effet, en cas d'abandon l'objet appelant doit considérer que l'utilisateur n'a effectué aucune opération, alors qu'au contraire le cas AUCUN correspond à un choix délibéré qui conduit à une modification des données de l'objet.
Méthode GERER
La méthode GERER fait appel à l'objet GESTION du composant en lui passant en paramètre l'identifiant de la fiche en cours. L'objet GESTION est appelé de manière synchrone (Instruction AppelerObjet). Au retour de l'appel, la liste de l'objet CHOIX est actualisée pour tenir compte des modifications éventuelles apportées aux données du composant.
Méthode <CodeListe>_CHOIX
Lorsque l'utilisateur effectue un double-clic dans une liste (ou tape Entrée dans la norme clavier standard), Oxygène++ déclenche la méthode générique CTRL_CHOIX qui elle-même fait appel à la méthode <CodeListe>_CHOIX (<CodeListe> symbolisant ici le code du contrôle de type "Liste" défini dans l'écran). Dans le cas du modèle CHOIX, ce mécanisme a été redéfini de façon à ce que le double-clic provoque la sélection de l'enregistrement. La méthode CTRL_CHOIX redirige donc l'événement vers la méthode VALIDATION. L'événement <CodeListe>_CHOIX n'est donc plus déclenché dans ce modèle.