Ca ne va pas être une application très utile, mais elle devrait avoir l'avantage de vous montrer comment faire un programme, comment utiliser un bouton, une boite d'édition et une zone de texte.
Voici ce que nous allons faire... Sur notre fenêtre, il y aura :
- Un bouton "Boîte de dialogue". Quand on clique dessus, une boite de dialogue s'ouvre avec juste un message quelconque et un bouton "Ok"
- Une zone de texte qui écrira quelque chose à chaque fois qu'on aura cliqué sur le bouton "Boîte de dialogue", par exemple le nombre de fois qu'on a cliqué dessus
- Une boîte d'édition où s'incrira le nombre de fois qu'on a cliqué sur "Boîte de dialogue" mais que lorsqu'on cliquera sur un autre bouton "Combien de fois?" Connaissez-vous une application plus inutile?
Mise en place des composants
Vous avez donc devant vous la fenêtre "Form1" qui est totalement vierge. Si ce n'est pas le cas, fermez tout ("Close all" dans le menu "File") et faîtes "New Application", nouvelle application.
On va commencer par enregistrer notre projet, "Save Project As...". Il vous demande un premier nom ("Unit1.cpp"), ce sera le nom du fichier contenant le code du programme. Mettez par exemple "inutile.cpp". Il vous demande ensuite le nom du projet, appelez-le "premier.mak" par exemple. Les noms ne peuvent contenir d'espaces, le caractère "_" est autorisé.
Maintenant, dans la palette de composants "Standard", cliquez sur le bouton, et cliquez sur votre "Form1". Mettez un autre bouton, une boîte d'édition, une zone de texte, réglez la taille de la fenêtre, placez-les où vous voulez pour que ce soit joli, vous obtenez ça...
Ensuite, on va donner les noms qui apparaitront à l'écran...
Cliquez sur "Form1" (une seule fois) et regardez dans l'inspecteur d'objet : changez le champ "caption" en "Première application".
Renommez également "Button1" et "Button2" en les selectionnant et en changeant "caption".
Effacez le texte "Edit1" en effaçant le champ "texte".
Effacez le texte "Memo1" en faisant en cliquant 2 fois sur "Lines" et en effaçant à la main.
Attention, il ne faut pas changer le nom des composants, mais simplement ce qui s'affiche à l'écran...
Finalement, vous obtenez ça :
Vous pouvez compiler si vous voulez ("Run" ou flêche jaune) pour voir ce que ça donne...
Boite de dialogue
On va associer une boite de dialogue au bouton "Boîte de dialogue", ok?
Bon, double-cliquez sur le bouton... Il crée automatiquement une fonction qui se déclenchera lorsqu'on cliquera sur le bouton. Il ne reste plus qu'à écrire le code associé au bouton dans la fonction. On rajoute donc :
Application->MessageBox ("Cliquez sur OK", "Important", MB_OK); Vous avez donc ça à l'écran :
Compilez le programme et regardez le résultat! Vous comprenez maintenant à quoi corresponde les champs de la fonction Application->MessageBox... Le premier champ est ce qui est écrit, le deuxième le titre de la boîte, et le troisième, les boutons disponibles (ici, seulement le bouton OK.
La zone de texte "Memo1"
On va maintenant rajouter du texte dans la zone de texte à chaque fois qu'on cliquera sur le bouton "Boite de dialogue". Pour cela, rajoutez la ligne suivante juste après celle qu'on vient de mettre (c'est quelque chose qu'on fait lorsquy'on clique sur notre bouton "Boîte de dialogue" :
Memo1->Lines->Add("Vous avez cliqué sur le bouton!"); Et essayez-le... ô, miracle! Vous savez maintenant utiliser la méthode Memo1->Lines->Add, ajouter une ligne à Memo1.
Il faut maintenant que l'on rajoute un compteur pour savoir combien de fois on a cliqué sur le bouton.
La fonction FormCreate
Le problème, c'est que si on met une variable dans la fonction associé au bouton "Boîte de dialogue", elle reprendra sa valeur initial à chaque fois qu'on va cliquer dessus et n'existera plus dans le reste du programme. On va donc mettre une variable globale dans le programme qui s'appelera "clics_b1".
Allez au début du programme, et rajoutez int clics_b1; juste après TForm1 *Form1;... On vient de rajouté notre variable globale.
Cette variable devra prendre la valeur 0 lorsqu'on lance le programme. La fonction FormCreate sert à ça : elle regroupe toutes les actions à faire pour initialiser notre programme, au momemt où on affiche notre fenêtre principale...
Pour créer cette fonction, double-cliquez sur un endroit de Form1 où il n'y a pas de composant.
Rajoutez la ligne clics_b1 = 0; Il ne reste plus qu'à rajouter dans la fonction associée au bouton 1 la ligne clics_b1++; qui incrémente clics_b1 de 1.
Vous devriez avoir ceci :
La boîte d'édition "Edit1"
Il ne reste plus qu'à rajouter dans la boîte d'édition "Edit1" la variable clics_b1...
Créez la fonction associée au bouton "Combien de fois" en double-cliquant dessus et rajoutez la ligne
Form1->Edit1->Text = clics_b1; Ce qui vous donne :
void __fastcall TForm1::Button2Click(TObject *Sender) { Form1->Edit1->Text = clics_b1; } Maintenant, vous pouvez compiler en faisant "Run", ça marche... Vous pouvez même executer "premier.exe" en dehors de l'environnement C++ Builder : c'est votre programme...
Quelques composants courants
Bouton
Y'a-t'il plus simple à utliser que les boutons? Peut-être les labels... Voici le principe : vous posez votre bouton sur votre feuille graphique et vous changez "Caption" dans l'inspecteur d'objet et y mettre ce que vous voulez qui apparaisse sur votre bouton... Et voilà...
Deux propriétés à connaître :
- Enable permet d'autoriser ou non l'utilisation du bouton en le grisant lorsqu'on lui donne la valeur false.
(ex: Button1->Enabled = false;)
- Caption permet de renommer le bouton à n'importe quel moment
(ex: Button1->Caption = "Bonjour";)
Case à cocher
Très pratique pour proposer un choix à l'utilisateur... Vous pouvez changer ce qui est écrit à côté de la case en changeant la propriété caption dans l'inspecteur d'objet. Elle n'est pas cochée par défaut, mais vous pouvez l'initialiser à "true" en changeant la propriétés Checked dans l'inspecteur d'objet.
La propriété la plus utilisée est la propriété Checked :
CheckBox1->Checked est égal à "true" (1) si la case est cochée et "false" (0) si la case n'est pas cochée. Si vous voulez cocher la case vous-même dans le programme, vous pouvez également utiliser cette propriété en écrivant CheckBox1->Checked = true;...
Boîte d'édition
Une zone de texte ne comportant qu'une seule ligne... Vous pouvez changer ce qui est écrit dedans par défaut en changeant le champ Text de l'inpecteur d'objets. Vous pouvez également autoriser ou non que l'utilisateur change la valeur de la boîte d'édition en changeant la propriétés Enabled de true vers false...
Vous vous doutez de la propriété la plus utilisée : c'est celle qui permet de lire ce qu'il y a dedans ou d'écrire : Text...
Edit1->Text renvoie la chaîne de caractère qui est dedans et vous pouvez écrire en mettant Edit1->Text = "Bonjour" par exemple...
NB : La valeur renvoyée est une chaîne de caractère... Si vous voulez récupérer un entier, il faut le convertir avant en utilisant la fonction StrToInt ( Edit1->Text )...
Groupe
Ce composant est purement visuel : il permet de séparer votre fenêtre en plusieurs groupes... Posez-le et donnez-lui le nom que vous voulez (champ caption de l'inspecteur d'objet) et sa taille. Mettez vos composants à l'intérieur tout à fait normalement.
Label
Ce composant est très utilisé puisqu'il permet d'ajouter du texte sur votre fenêtre graphique directement sur le fond. Posez votre label et écrivez ce que vous voulez en changeant Caption dans l'inspecteur d'objets. Les propriétés du texte peuvent également être changées en changeant Fonts dans l'inspecteur d'objets.
Vous pouvez changer un label en cours de programme en utilisant la propriété Caption :
Label1->Caption = "nouveau texte"
Liste déroulante
Tout d'abord, la plupart du temps, il faut changer csDropDown (propriété Style de l'inspecteur d'objets)en csDropDownList... Si vous ne changez pas ça, l'utilisateur pourra lui même rentrer des Items (un item est un élément de la liste)...
Au départ, votre liste est vide. Il faut ajouter un à un ce que vous voulez mettre dedans pour la remplir. La propriétés Item->Add est là pour ça...
Pour ajouter une chaîne de caractère au menu, vous pouvez faire par exemple
ComboBox1->Items->Add("Bonjour"); Après avoir ajouté des éléments, vous pouvez faire ComboBox1->ItemIndex = 0; pour que le premier élément apparaisse directement dans la boîte plutôt qu'elle ne reste en blanc...
Il y a deux façon de gérer ce que l'utilisateur à selectionné. Si vous voulez récupérer le texte associé à l'élément sélectionné, vous pouvez simplement utiliser ComboBox1->Text... Cependant, il est souvent utile d'associer un entier à chacun des éléments, et la propriété ItemIndex est là pour ça. ComboBox1->ItemIndex est égal à 0 si l'élément selectionné est le premier de la liste, à 1 si c'est le deuxième, etc...
Zone de texte
La zone de texte à l'avantage de garder un mémoire tout ce qui est passé avant et de pouvoir afficher plusieurs lignes...
Pour qu'elle soit vide à l'initialisation ou avec le texte que vous voulez, il faut changer la propriété Lines de l'inspecteur d'objets.
La propriété la plus utilisée est celle qui rajoute une ligne, soit Lines->Add que vous pouvez utliser comme suit :
Memo1->Lines->Add("Bonjour");
Barre de menus
Là, on pourrait difficilement imaginer plus simple... Vous posez votre menu n'importe où sur votre feuille graphique et vous allez dans l'inspecteur d'objets... Selectionnez la propriétés Items (Menu) et la fenêtre d'édition des menus s'ouvre... Vous écrivez vos menus comme vous l'entendez et lorsque vous voulez définir ce qu'il se passe quand n clique sur tel ou tel élément du menu, il suffit de double-cliquer sur l'élément et vous atterissez directement là où il faut écrire le code associé à l'élément...
Onglets
Egalement d'une simplicité déconcertante... Posez votre composant "onglets" sur votre feuille, et pour rajouter un onglet de plus, il suffit de faire "bouton droit" puis Nouvelle Page... Donnez le nom de l'onglet au moment où vous le créez.
Et c'est tout, vous pouvez l'utiliser normalement et poser vos composants dessus...
Barre de progression
Voilà un composant très pratique pour faire patienter l'utilisateur. Le principe est simple, on définit un nombre d'étapes plus ou moins équivalente en temps et après chaque étape, on incrémente la barre de 1 (ou plus)...
Définition du nombre d'étapes (ici, 9) : ProgressBar1->Max = 9; Faire avancer la barre de progression de 1 : ProgressBar1->StepBy(1);