TextArea

Classe de base pour gérer l'insertion et l'édition de texte.

Version: 1.0
Date: Le 6 août 1997
Rédaction: Jocelyn Houle
Direction: Jean Vaucher


Introduction

Les TextArea sont des zônes de texte dans lesquelles on peut écrire et sélectionner du texte.

Voici les différentes fonctions des TextAreas:


Informations sur les TextAreas

Les TextAreas ne sont pas implantés pour être utilisés directement, mais plutôt par l'entremise des autres classes (i.e. les ListWindows, ScrollWindows, SelectionListWindows et MenuScrollWindows). Il renferme cependant des appels disponibles à ses sous-classes.

Il est toutefois possible d'en créer une:
ref(TextArea) procedure MakeTextArea;
Retourne un nouveau TextArea.

Gestion de la taille

On peut fixer la taille de la fenêtre par un SetSize, mais on peut également la définir en termes de lignes et de colonnes de texte:
procedure SetColumns(NB); integer NB;
Modifie la taille du TextArea pour qu'il puisse contenir NB caractères sur une ligne.
procedure SetLines(NB); integer NB;
Modifie la taille du TextArea pour qu'il puisse contenir NB lignes.
procedure SetTextSize(Cols, Rows); integer Cols, Rows;
Modifie la taille du TextArea pour qu'il puisse contenir Cols colonnes et Rows lignes.

Insertion

On peut aussi insérer du texte dans un TextArea. Pour ceci, on a accès à quelques procedures redéfinies pour avoir le même comportement que dans sysin:
OutInt OutFix OutReal
OutChar OutText SetPos
  OutImage  

Mais les TextAreas ont leurs propres procédures d'affichage. Elles sont:
procedure PutLine(t); text t;
Insère le texte t à la suite du texte déjà écrit.
procedure PutLineNr(i, t); integer i; text t;
Insère le texte t à la ième ligne, en écrasant celle-ci.
procedure InitPutLine(t); text t;
Insère une ligne et conserve le curseur au début de la zône.
Note InitPutLine ressemble beaucoup à InitLine à une exception près: elle ne fait PAS de Refresh. Ainsi, une ligne ajoutée avec InitPutLine ne s'affichera pas automatiquement, mais devra attendre le prochain Refresh. C'est pourquoi cette procédure ne devrait servir que lors de l'initialisation de la zône de texte (avant le tout premier Show). Par la suite, mieux vaut utiliser PutLines ou Outtext-Outimage.
procedure SysPutLine(t); text t;
Insère une ligne et retourne le curseur au début de la zône.
Note La différence avec SysPutLine et InitPutLine est seulement le mode de passage du texte t. Avec InitPutLine, il est passé par value; avec SysPutLine, il est passé par name.

Les TextAreas peuvent accepter du texte tappé par l'usager. Pour gérer ceci, il existe 2 procédures:
procedure AllowInput
Permet à la zône d'accepter l'entrée de l'utilisateur.
procedure DisallowInput
Empêche l'entrée de texte dans la fenêtre.

Finalement, on peut vider le tout ou tester le contenu:
procedure MakeEmpty
Vide complètement la zône de texte du TextArea.
boolean procedure IsEmpty
Retourne TRUE si la zône est vide, FALSE sinon.

Accession

WindowTools permet aussi d'accéder au texte présent dans la zône...
text procedure GetLine(i); integer i;
Retourne la ième ligne, depuis le début du texte.

Défilement

Les TextAreas permettent aussi de faire défiler leur contenu. Pour ce, il possèdent plusieurs procédures.
procedure ScrollLineUp; Défile d'une ligne vers le haut.
procedure ScrollLineDown; Défile d'une ligne vers le bas.
procedure Scroll(n); integer n; Défile de n lignes. Si n est positif, vers le bas; s'il est négatif, vers le haut.
procedure ScrollPage(Up); boolean Up; Si Up est TRUE, défile d'une page écran vers le haut, sinon, ce sera vers le bas.
procedure ScrollToTop; Se rend au début du texte.
procedure ScrollToBottom; Se rend à la fin du texte.
procedure ScrollTo(fraction); real fraction; Défile pour être rendu a la fraction du texte définie par fraction.
procedure ScrollToLine(n); integer n; Défile le texte de façon à avoir la ligne n au centre de l'écran.
procedure ScrollLineTop(n); integer n; Défile le texte de façon à avoir la ligne n au haut de l'écran.

Autres

Il existe aussi d'autres appels qui peuvent s'avérer être utiles. Ils sont:
integer procedure GetNumberOfLines
Retourne le nombre de lignes dans le TextArea.
procedure RefreshLines
Force un réaffichage du contenu.

On peut aussi désactiver une ligne en la mettant grise. Il y a deux appels reliés à cette fonction:
procedure GrayLine(n); integer n;
Met grise la nième ligne.
boolean procedure Gray(n); integer n;
Retourne TRUE si la nième ligne est grise et FALSE sinon.

Il existe aussi des appels identiques à quelques appels précédents à l'exception qu'ils ne considèrent que les lignes non-grises. Ils sont:
procedure PutVisibleLineNr(i, t); integer i; text t;
text procedure GetVisibleLine(i); integer i;


Notes

Comme indiqué plus haut, les TextAreas ne sont pas destinés à être utilisés directement, mais plutôt par l'entremise d'autres classes. Vous ne devriez pas avoir à créer un TextArea. Les appels décrits ci-haut demeurent tout de même pertinents puisqu'ils sont accessibles dans les autres classes utilisant les TextAreas.

[Retour à l'index de WindowTools...]