Abstraction Concrète : Module Edition


Les champs sont définis comme des zones contenant des chaînes de caractères de longueur fixe.

Le module de gestion de zones d'édition de champs utilise le module ecran de gestion d'écran en mode texte, et le module clavier de gestion des touches, qui ont été préalablement définis.

Deux exceptions sont introduites : Fin_d'edition of touche et Erreur_edition of touche pour contrôler la sortie d'édition avec validation ou la sortie d'édition avec annulation.

Le type zone_edition comprend un champ nommé x et un champ nommé y pour repérer la position en colonne et en ligne de la zone d'édition. Le champ d indique la longueur d'affichage de la zone d'édition. Le champ mutable s mémorise la chaîne éditée. Le champ id_champ indique le nom du champ édité dans la zone d'édition. Le champ lchamp indique la longueur effective du champ. Le champ mutable s mémorise la chaîne éditée.

La fonction message_XY (x,y,l) mode mess affiche le message mess tronqué à la longueur n, en colonne x, ligne y, dans le mode d'affichage mode.

La fonction principale editer str (x, y) d édite la chaîne de caractères str dans une fenêtre d'édition de longueur d caractères positionnée colonne x, ligne y. Après la sortie d'édition, la fonction retourne une paire (rapport, valeur), de type touche * string. Le premier élément de la paire : rapport vaut NULL si annulation et indique la valeur de la dernière touche frappée si validation. Le deuxième élément de la paire : valeur vaut "" si annulation et retourne la valeur de la chaîne éditée modifiée si validation.
La touche <Origine> déplace le curseur d'édition au début du champ. La touche <Fin> déplace le curseur d'édition à la fin du champ. La touche <Retour arrière> efface le caractère précédent, et déplace le curseur d'édition vers la gauche d'une position. La touche <Suppr> efface le caractère courant sans déplacement du curseur. La touche <Flèche à gauche> déplace le curseur d'édition vers le caractère précédent. La touche <Flèche à droite> déplace le curseur d'édition vers le caractère suivant. La touche <Tab>, la touche <Maj Tab> et la touche <Entrée> valident et terminent la saisie. La touche <Echap> annule et termine la saisie.