ItemWindow

Classe pour gérer un ensemble de champs éditables pour l'entrée de données.

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


Introduction

Les ItemWindows permettent d'afficher des dialogues pour l'entrée de champs de divers types.

L'exemple ci-dessous montre une ItemWindows avec deux champs: un nom et un mot de passe. Le code correspondant est donné en dessous.

 

Code

BEGIN
    EXTERNAL CLASS WindowTools;

    INSPECT NEW MainWindow ("Login") DO
    BEGIN
        REF(Button)           OK;
        REF(TextItemWindow)   Login;
        REF(TextItemWindow)   Password;

        SetSize(300, 120);
        Login :- MakeTextItem("Login", 10).PlaceAt(100, 10);
        Password :- MakeTextItem("Password", 15).PlaceBelow(Login);
        Password.NoEcho;             !Le mot de passe sera cache ("bulleted");

        OK :- MakeButton("OK").PlaceDownRight;
        Show;
        OK.wait;
        
% Affichage des valeurs courantes
        OutText("Login:    " & Login.Get); OutImage;
        OutText("Password: " & Password.Get); OutImage;
    END;
END;

On a commencé par créer les 2 ItemWindows qui étaient toutes les deux de types TEXT:

   Login :- MakeTextItem("Login", 10);
   Password :- MakeTextItem("Password", 15);

Ensuite, on a attendu que le bouton "Ok" soit appuyé, et on a affiché les valeurs de chaque zône, à l'aide de la procédure Get:

   OutText("Login:    "   & Login.Get); OutImage;
   OutText("Password: "   & Password.Get); OutImage;


Informations sur les ItemWindows

Il y a un ItemWindow par type de variable:
BoolItemWindow Pour les booléens
CharItemWindow Pour les caractères
TextItemWindow Pour les textes
IntItemWindow Pour les entiers
RealItemWindow Pour les nombres à virgule flottante

et sont créés à l'aide des commandes:
ref(BoolItemWindow) MakeBoolItem(lb); text lb;
ref(CharItemWindow) MakeCharItem(lb); text lb;
ref(TextItemWindow) MakeTextItem(lb, nc); text lb; integer nc;
ref(IntItemWindow) MakeIntItem (lb, nc); text lb; integer nc;
ref(RealItemWindow) MakeRealItem(lb, nc); text lb; integer nc;

lb est le label (i.e. le texte/mot clé spécifiant de quoi il s'agit) et où nc est le nombre de caratères que la zône doit avoir.

Il existe quelques procédures intéressantes, accédées par notation pointée, avec lesquelles vous pourrez expérimenter. Notez que certaines de ces fonctions ont été héritées de surclasses. Il ne sera donc pas surprenant d'apprendre qu'il existe d'autres procédures qui peuvent être utilisées, mais qui ne sont pas spécifiquement documentées ici.

procedure NoEcho;
Affiche des étoiles au lieu de l'entrée ("bulleted text").
procedure Echo;
Affiche le texte normal (sert à annuler echo).
type procedure Get;
Retourne la valeur de l'ItemWindow.
    Integer   X;
    X :- MyIntItem.Get;

Si l'ItemWindow est un IntItemWindow, la valeur retournée sera un entier, si c'est un CharItemWindow, ce sera un caractère, etc.

Il existe aussi la variable Current_Text qui donne la valeur en texte dans l'ItemWindow. Current_Text est accessible de n'importe quel ItemWindow et est toujours de type TEXT, peu importe le type de l'ItemWindow. Pour y accéder, faites, par exemple:

    T :- MyIntItem.Current_Text;

procedure Put(Init); type Init;
Permet de changer la valeur affichée dans la zone d'entrée.
Si l'ItemWindow est un IntItemWindow, Init devra être un entier, si c'est un CharItemWindow, Init devra être un caractère, etc.

L'utilisation la plus courante de cette procédure est pour mettre une valeur initiale et ceci peut se faire de façon élégante avec l'enchaînement des méthodes.

Par exemple, si on voulait ajouter un champ Ville avec "Montreal" comme valeur par défaut:

   ref(TextItemWindow)   Ville;
   Ville :- Liste.MakeTextItem("Ville", 15).Put("Montreal");

De la même façon que Get a Current_Text, Put a la procédure Set_Current_Text qui insère une valeur TEXT. Faites toutefois attention, car contrairement a Put, l'affichage ne sera pas consistant avant le prochain Refresh (voir l'exemple de la fiche plus bas).

procedure LeftJustify;
Aligne à gauche l'affichage dans la zône d'entrée.
procedure CenterJustify;
Aligne au centre l'affichage dans la zône d'entrée.
procedure RightJustify;
Aligne à droite l'affichage dans la zône d'entrée.


Notes sur le traitement de l'entrée

WindowTools se charge automatiquement d'un certain traitement d'erreurs lors de l'entrée. Ceci se résume à filtrer les caractères qui sont destinés à la fenêtre; les caractères "illégaux" sont tout simplement ignorés.

TextItemWindow
Les TextItemWindows est le moins restrictif de tous les ItemWindows et peut donc accepter tous les caractères possibles, jusqu'à concurrence de la longueur maximale de la zone d'entrée.
Exemples: Salut
  123
  1*(1+Y) = 8 donc Y = 7

CharItemWindow
Les CharItemWindows n'ont aucune particularité propre, hormis le fait qu'un seul caractère à la fois peut se situer dans la zone d'entrée.
Exemples: A
  8
  ?

IntItemWindow
Les IntItemWindows n'acceptent que les chiffres comme entrée. Ils peuvent être précédés d'un des deux signes suivants: + et -. Tout autre caractère (lettre ou ponctuation) n'aura aucun effet. La taille est limitée par nc spécifié lors de la création de l'item.
Exemples: 3
  123
  -8 + 4 - 2 (qui retournera -8 seulement)

RealItemWindow
Les RealItemWindows sont presqu'identiques aux IntItemWindows, à l'exception du point (pour pouvoir écrire un nombre décimal!).

Note: Pour des raisons de facilité d'implantation, la zône d'entrée d'un RealItemWindow peut accepter plus d'un point. Ainsi, on pourra écrire le nombre 1.2.3 en entrée, mais il sera traduit en 1.2 lors de la transformation en REAL (à l'aide du Get).
Exemples: 9
  -0.978
  +12.47

BoolItemWindow
Les BoolItemWindows ont un traitement relativement différent des autres. Les touches "Y O J" (pour yes, oui et ja) mettent la zône à TRUE alors que la touche "N" (pour no, non ou nei) la mettent à FALSE. N'importe quelle autre touche, ou même un click de souris fera un toggle et changera tout simplement la valeur.
Exemples: Y ---> TRUE
  N ---> FALSE
  4 ---> inverse la valeur actuelle

Commentaires d'ordre général

Pour parcourir les ItemWindows, on peut se promener d'une zône à l'autre en utilisant les flèches (haut et bas). La touche ENTER a exactement le même effet que la flèche en-bas.


Exemples de programmes

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