Méthodes CTRL_BOUTON_CHOISIR_INTERNE, CTRL_BOUTON_GERER_INTERNE et CTRL_BOUTON_CREER_INTERNE

Un des automatismes liés à la Norme Composant est la possibilité d'appeler des objets d'un composant en lien sans écrire de code.

Dans un écran, si un bouton porte le code [code_composant]_CHOISIR, en cliquant sur le bouton, le système va appeler la méthode CHOIX du composant en lien et récupérer la valeur de retour.

 

Exemple : la fiche 'Client' (composant CLIENT) possède un lien vers une 'Famille' (composant FAMILLE). C'est à dire que la table CLIENT possède un champ FAMILLE_IDENT. Dans l'écran de gestion des Clients il suffit de nommer un bouton FAMILLE_CHOISIR. En cliquant sur le bouton et en sélectionnant une famille, le système va affecter l'identifiant de la Famille à la fiche Client (CLIENT.FAMILLE_IDENT = I_FAMILLE.IDENT).

 

Il existe en tout 3 possibilités de code :

  • [code composant]_CHOISIR : ouverture de l'écran de CHOIX.

  • [code composant]_GERER : ouverture de l'écran de GESTION en mode Visualisation.

  • [code composant]_CREER : ouverture de l'écran de GESTION en mode Création.

 

Remarque : dans les modèles gérant les Droits d'accès (ex: GESTION2), on peut également utiliser les suffixes _CHOIX, _GESTION et _CREATION.

 

Personnalisation ou réécriture de la méthode de CHOIX

Concernant la sélection d'une fiche en lien, il est souvent utile de contrôler le choix de l'utilisateur. Par exemple, on ne souhaite pas autoriser la sélection de la Famille "AFRIQUE" pour un client français.

 

On peut le faire à la fin de la méthode CTRL_BOUTON_CHOISIR_INTERNE mais c'est déjà un peu tard car la sélection a déjà été faite. A la limite, on pourrait afficher un simple message d'avertissement.

 

Dans la plupart des cas on est obligé de réécrire la méthode complète. Voici un exemple complet :

Methode FAMILLE_CHOISIR
 // sauvegarde de l'identifiant
 Variables : Chaine vident
 vident = FAMILLE_IDENT
 // ouverture de l'écran de choix
 AppliquerMethodeComposant FAMILLE.CHOIX (vident)
 // analyse du choix de l'utilisateur
 // ErreurRendue: 1=Annuler
 Si ErreurRendue = 1 Alors
    Quitter
 FinSi
 // ErreurRendue: 0=OK, 2=Aucune
 // lecture de l'interface de FAMILLE
 LireInterface FAMILLE
 // test pour rejeter certaines sélections
 Si I_FAMILLE.CODE = "AFRIQUE" Alors
    BoiteMessage "Sélection AFRIQUE interdire"
    // relecture de la famille d'origine
    AppliquerMethodeComposantLire FAMILLE.LECTURE (FAMILLE_IDENT)
    Quitter
 FinSi
 // on prévient le système qu'on modifie une valeur manuellement
 Si Saisie=0 Alors
    AppliquerMethode CTRL_DEBUT_MODIF
 FinSi
 // affectation du champ de la table principale
 FAMILLE_IDENT = I_FAMILLE.IDENT
 // affichage des autres zones liées
 Afficher "I_FAMILLE.CODE","I_FAMILLE.DESIG"
FinMethode

 

Il peut également être intéressant de filtrer l'écran de choix si l'utilisateur a commencé a saisi les premières lettres de la famille souhaitée.

De même un contrôle peut être fait lorsque l'utilisateur a saisi la famille dans la zone prévue à cet effet.

 

Voir aussi : Les automatismes des composants