Exercice 3 : TEXTE & BOUTONS RADIO

BUT : L’exercice 3 vise a montrer l’utilisation d’une fenêtre texte (Text Box Control) et des boutons radio (Radio Button Control) tout en exerçant les connaissances précédemment acquises.

Partie A : Gestion du texte

 

download exercise 2 !

Reprenez une nouvelle fois votre projet après l’exercice 1 ou si vous n’avez pas fait l’exercice 1, cliquez ici afin de chargez les fichiers. Attention : N'OUVREZ PAS ces fichiers, mais sauvegardez-les dans votre dossier Exercice_GUI. Vous devrez ajouter les librairies nécessaires, référez-vous à l'exercice 1 pour ce faire. Il est possible que vous ayez à modifier quelques propriétés telles les dimensions de la fenêtre si vous reprenez votre propre projet.

 

Sur votre fenêtre (Principale) rajoutez une boite de texte (Text Box Control) de longueur égale à votre titre. Ajoutez dessous un Label (Label Control) de même grandeur, puis trois boutons radio (Radio Button Control).

 

1/ Renommez les objets

La boite de texte

Changez le nom de l’objet, écrivez : Boite_Saisie (Name).

Changez le texte de l’objet, laissez vide (Text).

 

Le label

Changez le nom de l’objet, écrivez : Texte_Saisi (Name).

Changez le texte de l’objet, écrivez : texte saisi dans la boîte Boite_Saisie (Caption).

 

Le premier bouton radio

Changez le nom de l’objet, écrivez : Texte_Rouge (Name).

Changez le texte de l’objet, écrivez : Texte rouge (Caption).

 

Le deuxième bouton radio

Changez le nom de l’objet, écrivez : Texte_Italique (Name).

Changez le texte de l’objet, écrivez : Texte italique (Caption).

 

Le troisième bouton radio

Changez le nom de l’objet, écrivez : Texte_Gras (Name).

Changez le texte de l’objet, écrivez : Texte gras (Caption).

 

Le but de cette interface est simple : afficher le texte entré dans la boîte de texte (Boite_Saisie) dans le label (Texte_Saisi). Les boutons radio vont servir à formater ce texte soit en rouge, soit en italique, soit en gras.

Fig. 3.1 - Remarquez la grille qui permet un alignement correct des objets sur la fenêtre.

2/ Afficher le texte dans le label

Inscrivez dans le code de Boite_Saisie :

procedure Boite_Saisie_Changed is

begin

 

-- écrit dans Principale.Texte_Saisi la chaîne qui se trouve dans Principale.Boite_Saisie à chaque fois qu’elle est modifiée

Text (Principale.Texte_Saisi, Text (Principale.Boite_Saisie));

 

end Boite_Saisie_Changed;

3/ Formater le texte

 

Afin qu’il n’y aie qu’un choix possible, vous devez, lors de la sélection d’un bouton, désélectionner les autres.

 

Pour le premier bouton écrivez donc :

procedure Texte_Rouge_Click is

begin

-- si le bouton est sélectionné

if Checked (Principale.Texte_Rouge) = 1 then

 

-- changer la couleur du texte

ForeColor (Principale.Texte_Saisi, Red);

 

-- rétablir le format éventuellement présent dû à une précédente sélection

FontItalic (Principale.Texte_Saisi, 0);

FontBold (Principale.Texte_Saisi, 0);

 

-- désélectionner les autres boutons

Checked (Principale.Texte_Italique, 0);

Checked (Principale.Texte_Gras, 0);

 

end if;

end Texte_Rouge_Click;

Pour les deux autres boutons essayez d’écrire leur code par vous-même. Puis contrôlez avec les codes ci-dessous.

 

Deuxième bouton :

 

procedure Texte_Italic_Click is

begin

if Checked (Principale.Texte_Italique) = 1 then

 

FontItalic (Principale.Texte_Saisi, 1);

ForeColor (Principale.Texte_Saisi, Black);

FontBold (Principale.Texte_Saisi, 0);

 

Checked (Principale.Texte_Rouge, 0);

Checked (Principale.Texte_Gras, 0);

 

end if;

end Texte_Italic_Click;

Troisième bouton :

 

procedure Texte_Gras_Click is

begin

 

if Checked (Principale.Texte_Gras) = 1 then

 

FontBold (Principale.Texte_Saisi, 1);

ForeColor (Principale.Texte_Saisi, Black);

FontItalic (Principale.Texte_Saisi, 0);

 

Checked (Principale.Texte_Rouge, 0);

Checked (Principale.Texte_Italique, 0);

 

end if;

end Texte_Gras_Click;

Partie B : Utilisation de fonctions

 

Afin d’approfondir vos connaissances rajoutez quelques fonctions : MouseDown et MouseUp.

 

Lorsque vous cliquez avec la souris, vous pouvez exécuter un code lors de la pression du bouton de la souris ou lorsque vous le relâchez.

Exemple : Agrandir un objet lors d’un clic de souris.

 

Dans le code de l’objet Label, sélectionnez, dans le menu déroulant Code, MouseDown et écrivez :

 

procedure Texte_Saisi_MouseDown (Button : gb.MOUSEBUTTON_t; Shift : gb.BOOL; X : gb.INT; Y : gb.INT) is

begin

 

-- doublez les valeurs de départ

Height (Principale.Texte_Saisi, 62);

Width (Principale.Texte_Saisi, 702);

FontSize (Principale.Texte_Saisi, 25);

 

end Texte_Entre_MouseDown;

Puis dans le menu déroulant Code, sélectionnez MouseUp et écrivez :

 

procedure Texte_Entre_MouseUp (Button : gb.MOUSEBUTTON_t; Shift : gb.BOOL; X : gb.INT; Y : gb.INT) is

begin

 

-- les valeurs doivent être les valeurs de départ !

Height (Principale.Texte_Saisi, 31);

Width (Principale.Texte_Saisi, 351);

FontSize (Principale.Texte_Saisi, 9);

 

end Texte_Entre_MouseUp;

Remarquez que si vous faites glisser la souris en maintenant le bouton appuyé et le lâchez en dehors du label, le label restera de grande taille puisque MouseUp n’a pas été effectué sur le label. Observez également que dans le menu déroulant Code du Code Editor une petite étoile apparaît sur les événements qui contiennent un code.

 

Un autre exercice : comment afficher une petit boîte de dialogue lors du passage de la souris sur un objet ?

 

Prenez par exemple le titre et sélectionnez, dans le menu déroulant Code du Code Editor, MouseMove et écrivez :

 

procedure Titre_MouseMove (Button : gb.MOUSEBUTTON_t; Shift : gb.BOOL; X : gb.INT; Y : gb.INT) is

begin

Hide (Principale.titre) ;

end Titre_MouseMove;

Le titre disparaît lors du passage de la souris sur ce dernier, mais comment le faire réapparaître ?

Pour cela nous allons à nouveau utiliser l’événement MouseMove, mais avec la méthode Show et cela non pas sur un objet mais sur la fenêtre.

 

Sélectionnez donc, pour la fenêtre Principale.Form, dans le menu déroulant Code du Code Editor, MouseMove et écrivez :

 

procedure Form_MouseMove (Button : gb.MOUSEBUTTON_t; Shift : gb.BOOL; X : gb.INT; Y : gb.INT) is

begin

Show (Principale.titre);

end Form_MouseMove;

Voilà, vous avez brillamment terminé l’exercice 3 ! Sauvegardez votre projet et votre fenêtre sous GUI Builder, retournez sous Object ADA, compilez, construisez l’exécutable, et laissez échapper un Ôhhhh béat d’admiration…