Exercice 4 : BOITES DE TEXTE

BUT : Vous savez maintenant modifier les propriétés des objets de différentes manières. Vous allez apprendre avec cet exercice à manipuler les boîtes de texte. Cet exercice vous fera construire une interface plus concrète et plus proche d’une application réelle.

download exercise 4 !

Vous pouvez vous évitez la construction de la fenêtre si vous le souhaitez en chargeant les fichiers suivants. Attention : N'OUVREZ PAS ces fichiers, mais sauvegardez-les dans votre répertoire. Vous devrez ajouter les librairies nécessaires au projet, référez-vous à l'exercice 1 pour ce faire. Il est tout de même recommandé de lire la marche à suivre de la construction.

1/ Préparation et ajout des objets

Pour cet exercice, vous allez créer un nouveau projet. Créez donc :

- un répertoire Exercice_4

- un projet GUI Builder – nommez-le Boite_texte.gbp (Save Project As…)

- un projet Object Ada contenant le fichier Exercice_4.prj et les librairies comme expliqué dans l’exercice 1 (n’oubliez pas de changer sous l’onglet Link, Console en Window).

- une fenêtre principale sous GUI Builder, nommez-la Saisie_Nom

Pour l’entête de la fenêtre, écrivez : Saisie du nom de l’utilisateur (propriété Caption)

En haut à gauche de la fenêtre créez un Label et une boîte de texte. Dupliquez chacun des objets et placez les au dessous. Nommez les éléments :

1er Label : Label_Nom (Name), écrivez Nom : sous Caption

1ère boîte de texte : Nom (Name), n’écrivez rien sous Text (effacez Text1)

2ème Label : Label_Prenom (Name), écrivez Prénom : sous Caption

2ème boîte de texte : Prenom (Name), n’écrivez rien sous Text.

Placez vos objets de telle sorte qu’ils soient à la même hauteur et qu’ils présentent bien. Utilisez la grille si vous le désirez (Options => Grid ou Ctrl+G ou encore dans la barre d’outils).

Vous pouvez aligner à droite le texte des deux labels avec la propriété Alignement puis Right.

Ajoutez maintenant un bouton sous vos objets. Nommez-le Validation (Name) et écrivez sous Caption : OK.

Dimensionnez la fenêtre afin qu’elle contiennent uniquement vos cinq objets.

Tous les éléments étant dimensionnés, vous pouvez les bloquer sur la fenêtre afin de ne pas les déplacer par mégarde (Options => Lock Control ou Ctrl+L ou encore dans la barre d’outils).

2/ Codage des méthodes

Une fois la mise en place des objets et leurs nominations, vous pouvez écrire le code. Le but de cette fenêtre est de saisir un nom et un prénom. On veut que l’utilisateur remplisse obligatoirement les deux champs.

Premièrement, on veut que lors de l’appel de cette fenêtre, on se trouve dans le premier champ (que le Focus soit sur Nom).

TabIndex sert à numéroter l’ordre de déplacement vers les objets dynamiques avec la touche de tabulation, le plus grand numéro étant le premier. Comme vous avez trois objets dynamiques écrivez dans les champs des propriétés TabIndex :

Nom : 3

Prenom : 2

Validation : 1

Deuxièmement on veut que l’utilisateur remplisse obligatoirement les deux champs. Pour cela il faut afficher un message d’erreur lorsque l’utilisateur veut valider la boite de dialogue avec un champ non rempli. Pour les messages d’erreur le GUI Builder met à disposition une procédure Msgbox. Un clic sur le bouton Validation se traduira par la fin de l’application.

Donc sous l’événement Click de Saisie_Nom.Validation écrivez :

-- si le champ NOM est vide

if text (Saisie_Nom.Nom) = "" then

-- affiche un message d’erreur. 1er param. : Texte / 2eme param. : nom de la fenêtre

Msgbox ("Le champ NOM est obligatoire", "Erreur");

-- replace le curseur sur le champ à remplir

SetFocus (Saisie_Nom.Nom);


-- si le champ PRENOM est vide

elsif text (Saisie_Nom.Prenom) = "" then

-- affiche un message d’erreur

Msgbox ("Le champ PRENOM est obligatoire", "Erreur");

-- replace le curseur sur le champ à remplir

SetFocus (Saisie_Nom.Prenom);


-- si les 2 champs sont remplis

else

gb.EndApplication;

end if;

Troisièmement on veut que l’utilisateur ne puisse pas utiliser les boutons d’agrandissement, de réduction et de fermeture de la fenêtre. Pour cela fixez à False les propriétés suivantes de la fenêtre Saisie_Nom.Form :

- MaxButton

- MinButton

- ControlBox

Quatrièmement on veut que l’utilisateur ne puisse pas entrer plus de 10 caractères dans un champ.

Pour cela il faut vérifier que la chaîne de texte du champ NOM n’ait pas plus de 10 caractères. Affichez là aussi un message d’erreur : sous l’événement Changed de Saisie_Nom.Nom écrivez :

procedure Nom_Changed is

begin

-- si le champ de la boite de texte Saisie_Nom.Nom Contient plus de dix caractères

if text (Saisie_Nom.Nom)'Length > 10 then

-- message d’erreur

Msgbox ("Maximum dix caractères !", " Erreur");

-- recopie les 10 premiers caractères dans la même fenêtre afin d’effacer le 11eme entré

text (Saisie_Nom.Nom, (text (Saisie_Nom.Nom) (1..10)));

end if;

end Nom_Changed;

En ce qui concerne le prénom, les méthodes utilisées sont les mêmes, si vous le désirez, appliquez-les sur Prenom_Changed.

Fig. 4.1 - Votre fenêtre au final...