Abstraction Concrète : Module Ediligne


Le module d'édition de lignes est semblable au module d'édition des champs, toutefois les valeurs éditées ne sont plus, ici, des chaînes de caractères de longueur fixe, mais au contraire des chaînes de caractères de longueur variable.

Ce module 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.

L'exception Fin_d'edition of touche est définie pour contrôler la sortie d'édition.

Le type fenetre_ligne comprend un champ nommé Ori pour repérer la position à l'écran de la zone d'édition, en colonne et en ligne. Le champ nommé Long indique la longueur d'affichage de la zone d'édition. Le champ mutable zone mémorise la chaîne éditée. Le champ mutable curs mémorise la position du curseur relative à l'origine de la zone d'édition. Le champ mutable depl mémorise la position de l'origine de la chaîne affichée relativement à la chaîne éditée.

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 sortie d'édition,
- sortie avec validation : Fin_d'edition touche,
- sortie avec annulation : Fin_d'edition touche,
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 retourne la valeur de la chaîne éditée non modifiée 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 en réduisant la longueur de la chaîne éditée d'un caractère. La touche <Suppr> efface le caractère courant sans déplacement du curseur, en réduisant la longueur de la chaîne éditée d'un caractère. 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. Tout nouveau caractère frappé est inséré dans la chaîne éditée, à la position du curseur en allongeant la longueur de la chaîne éditée d'un caractère. 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.