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.
|
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.
|
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.
|
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.
|
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. |
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...]