Expressions d'actions
et appels en retour
(callback)
Pour définir l'action à entreprendre au moment de la sélection d'un composant (tile) particulier dans une boîte de dialogue, vous devez associer une expression AutoLISP à ce composant en appelant la fonction (action_tile).
Cette association sera nommée "expressions d'actions".
Dans une expression d'actions, vous aurez souvent besoin d'accéder aux attributs dans le fichier DCL.
Les fonctions (get_tile) et (get_attr) vous y aideront.
En effet, la fonction (get_attr) recherche les attributs définis par l'utilisateur dans le fichier DCL et la fonction (get_tile) obtient la valeur courante d'un composant lors de l'exécution en fonction des données entrées par l'utilisateur.
Les expressions d'actions doivent être définies après l'appel à (new_dialog) et avant l'appel à (start_dialog).
Les informations relatives à la sélection d'un composant par l'utilisateur ou à la modification de son contenu sont renvoyées à l'expression d'actions sous forme d'appel en retour (callback).
De manière générale, chaque composant actif d'une boîte de dialogue génère un appel en retour.
La réponse d'une expression d'actions à un appel en retour (également appelé fonction callback) consiste, en principe, à effectuer un contrôle de validité sur le composant associé, et à mettre à jour les informations de la boîte de dialogue qui sont concernées par la valeur du composant.
La mise à jour de la boîte peut consister à générer un message d'erreur, à désactiver d'autres composants et à afficher le, texte adéquat dans une boîte d'édition ou une zone de liste.
Seul le bouton OK (ou son équivalent) devrait obtenir les valeurs des composants afin d'enregistrer les paramètres finalement sélectionnés par l'utilisateur.
En d'autres termes, vous devez mettre à jour les variables associées aux valeurs des composants dans l'appel en retour (callback) du bouton OK, et non dans celui d'un autre composant.
Si les variables permanentes sont mises à jour dans les appels en retour individuels des composants, il n'est pas possible de restaurer les valeurs initiales si l'utilisateur sélectionne le bouton Annuler.
Si l'appel en retour du bouton OK détecte une erreur, il devra générer un message d'erreur et envoyer le focus au composant sur lequel porte l'erreur;
la boîte de dialogue ne doit pas être fermée.
Si une boîte de dialogue intègre plusieurs composants dont la gestion est similaire, il peut être utile de les associer à un appel en retour unique.
Le principe consistant à ne pas valider les modifications de l'utilisateur tant qu'il n'a pas choisi OK est toujours applicable.
Il existe deux manières de définir des actions, outre l'utilisation de action_tile.
Vous pouvez soit définir l'action par défaut de toute la boîte de dialogue lorsque vous appelez (new_dialog), soit définir une action à l'aide de l'attribut action du composant.
Ces méthodes de définition d'actions et l'ordre dans lequel elles surviennent sont décrits dans "Actions par défaut et actions DCL".
22 janvier 2018