II. La grille▲
Le formulaire est créé : il va être utilisé comme conteneur pour recevoir un composant, le TstringGrid. La gestion d'un événement va permettre de remplir et effacer une case.
II-1. Introduction de la grille▲
Le projet intitulé ProjetGrille aboutit pour l'instant à une simple fenêtre appelée MonFormulaire qui sera utilisée pour recevoir une grille.
Ouvrir le projet. Pour cela, avec l'explorateur, ouvrir le répertoire EssaiStringGrid et double-cliquer sur le fichier ProjetGrille.lpi : Lazarus se lance et affiche le projet.
Pour faire apparaître la fenêtre du projet, cliquer sur Voir/Fiches et choisir MonFormulaire.
Autre méthode : appuyer simultanément sur les touches Shift et F12 ; ou encore, cliquer sur la deuxième icône de la 2e ligne, sous Fichier.
Il s'agit de placer sur la fenêtre du projet un composant StringGrid.
Les principaux composants s'affichent sous forme d'icône : sur la 2e ligne du menu apparaît l'onglet Standard, puis l'onglet Additional, puis CommonControls...
Dans l'onglet Additional, dans le 3e tiers de la ligne d'icônes apparaît le composant TStringGrid qui se distingue par les trois lettres abc.
Cliquer une fois dessus : il est entouré d'un grisé qui indique la sélection.
Pour le glisser dans la fenêtre, il suffit maintenant de cliquer une fois dans la fenêtre.
Le composant s'insère précisément au point où la fenêtre a reçu le clic.
L'inspecteur d'objets reconnaît maintenant deux objets : MonFormulaire et StringGrid1.
Un clic sur le second fait apparaître ses propriétés modifiables, les événements que l'on pourra utiliser, les favoris et les restrictions.
Dans l'onglet Propriétés, quelques valeurs vont être modifiées :
- ColCount : passer de 5 Ã 21 (nombre de colonnes) ;
- Height : passer de 100 Ã 300, (hauteur visible de la grille) ;
- Left : passer de 10 à 0, (espace entre la gauche de la fenêtre et la gauche du composant) ;
- Name : passer de StringGrid1 Ã MaGrille, (nom utilisable dans le code) ;
- RowCount : passer de 5 Ã 21 (nombre de lignes) ;
- Top : passer de 10 à 0 (espace entre le haut de la fenêtre et le haut du composant) ;
- Width : passer de 200 Ã 600 (largeur visible de la grille).
Certaines modifications peuvent être menées graphiquement, directement depuis la fenêtre : à l'aide de la souris, il est facile de placer le composant en haut et à gauche de la fenêtre (mise à zéro de Top et Left), et d'étirer le composant pour ajuster ses dimensions aux valeurs souhaitées (Height et Width).
Les autres propriétés sont toujours accessibles via l'inspecteur d'objets, ou encore en écrivant quelques lignes de code.
II-2. Première utilisation▲
En première étape, il faut vérifier que la grille peut afficher une information et l'effacer.
Pour cela, insérer un bouton dans MonFormulaire (Voir/Composant/TButton), le positionner dans la partie inférieure droite de MonFormulaire et modifier son titre (Caption) en remplaçant Button1 par Affichage.
L'idée est de cliquer sur le bouton pour écrire le mot Bonjour dans la case qui a 1,1 pour coordonnées.
Si la case est vide, ce mot est inscrit.
Sinon, elle sera vidée.
Le code s'écrit ainsi :
With
MaGrille do
If
Cells[1
,1
]=''
Then
Cells[1
,1
]:='Bonjour'
Else
Cells[1
,1
]:=''
;
Explications :
au lieu d'écrire trois fois MaGrille.Cells[1,1], syntaxe normale, il est plus rapide de déclarer l'identification de Cells par l'instruction With MaGrille do...
Mais où écrire ces lignes ? Lazarus fait tout, ou presque : revenir au formulaire et double-cliquer sur le bouton Affichage : le formulaire passe au second plan au bénéfice de l'éditeur de source, le curseur clignote précisément sur la nouvelle procédure créée automatiquement :
procedure
TMonFormulaire.Button1Click(Sender: TObject);
begin
end
;
Entre les mots clés begin et end, insérer le code précédent, ce qui donne :
procedure
TMonFormulaire.Button1Click(Sender: TObject);
begin
With
MaGrille do
If
Cells[1
,1
]=''
Then
Cells[1
,1
]:='Bonjour'
Else
Cells[1
,1
]:=''
;
end
;
La touche F9 lance l'exécution du projet ; elle procède en outre à l'enregistrement du code et à la fabrication du fichier exécutable EssaiGrille.exe.
Un clic sur le bouton Affichage fait apparaître le mot Bonjour, un second l'efface.
Soit, ce n'est pas grand-chose, mais un peu de fantaisie pourrait faire apparaître également les mots Au revoir...
L'affichage pourrait se faire dans une case choisie au hasard...
Il suffit pour cela d'un peu d'imagination et de quelques modifications du code... tous les outils sont disponibles !
À noter :
Les indices des cases commencent par zéro, les colonnes d'abord, les lignes ensuite.
MaGrille.Cells[i, j] désigne donc la case de la (i+1)ème colonne et de la (j+1)ème ligne de la grille appelée MaGrille.
Le contenu du composant StringGrid est toujours de type chaîne (String).
L'affectation d'une valeur numérique provoquera donc une erreur. On écrira plutôt :
MaGrille.Cells[i, j]:='123'; ou encore MaGrille.Cells[i, j]:=IntToStr(123);
L'affectation d'une valeur chaîne peut également provoquer une erreur.
Par exemple MaGrille.Cells[i, j]:=Bonjour;
Dans ce cas, le compilateur cherche la variable de type String du nom de Bonjour, qui n'existe pas.
Il faut donc bien écrire comme précédemment MaGrille.Cells[i, j]:='Bonjour';
II-3. Bilan▲
Le formulaire contient maintenant un composant Grille, dont on peut régler à volonté le nombre de lignes et de colonnes et afficher ce que l'on souhaite dans chacune de ses cases.
Un composant Bouton est utilisé pour modifier la grille.
Pour cela, une procédure détecte le clic sur le bouton et l'interprète pour lancer une action.
La phase suivante va permettre d'identifier les lignes et les colonnes et de présenter un remplissage des cases.
Un clic sur le petit carré rouge du menu interrompt l'exécution et rend la main à Lazarus.