IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Le StringGrid facile avec Lazarus


précédentsommairesuivant

IV. Coordonnées de la souris

Dans son avancement actuel, le projet construit une grille entièrement remplie, colonnes et lignes clairement identifiées. Un bouton permet d'éditer une case.
Cette nouvelle étape va utiliser l'événement OnMouseMove qui détecte la position de la souris au-dessus de la grille et informe le programme de ses coordonnées au pixel près.

IV-1. L'événement OnMouseMove

Image non disponible

Pour relancer Lazarus et afficher le code du projet, ouvrir le répertoire EssaiStringGrid et double-cliquer sur le fichier ProjetGrille.lpi. La deuxième icône de la deuxième ligne donne accès aux fiches : cliquer sur MonFormulaire puis sur OK ; cliquer sur la grille : l'inspecteur d'objets affiche les propriétés et les événements associés. Dans l'onglet Evénements, chercher OnMouseMove, cliquer dessus : une zone de saisie apparaît, écrire le nom de la procédure à créer, ici CoordSouris, appuyer sur Entrer.

Cette commande remet l'éditeur de source au premier plan, le curseur clignotant à l'intérieur de la nouvelle procédure qui se présente ainsi :

 
Sélectionnez
procedure TMonFormulaire.CoordSouris(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
 
end;

Que représentent les variables X et Y qui apparaissent dans les paramètres de cette procédure ? Pour le savoir, il suffit de les afficher dans la grille. Entre les mots begin et end ci-dessus, il suffit d'écrire :

 
Sélectionnez
With MaGrille do
    begin
       Cells[1,2]:='X ='+IntToStr(X);
       Cells[1,3]:='Y ='+IntToStr(Y);
    end;

Un appui sur F9 lance l'exécution. Rien ne se passe, en apparence. Par contre, si le curseur de la souris entre dans la surface occupée par la grille, les deux cases choisies affichent les coordonnées du curseur, avec une mise à jour automatique en fonction des mouvements de la souris.

Si le curseur est placé dans l'angle supérieur gauche, les coordonnées sont 0, 0.

Dans l'angle inférieur droit, les coordonnées deviennent 578, 278. Les dimensions de la grille avaient été fixées à 600 par 300 ? L'écart représente précisément la largeur des ascenseurs qui permettent de naviguer dans les parties cachées de la grille.

En conclusion, la procédure CoordSouris communique en permanence les coordonnées de la souris au pixel près.

Image non disponible

IV-2. Coordonnées colonne et ligne

Pour obtenir les numéros de colonne et de ligne à partir des coordonnées X et Y de la souris, il faut utiliser la procédure MouseToCell(X, Y, sCol, sLig) qui fait directement la conversion.

L'introduction de deux nouvelles variables sCol et sLig impose une déclaration en tête de la procédure (variables locales) ou avant l'implémentation (variables globales).

Pour afficher le résultat, le plus simple est d'utiliser la case restée vide en haut et à gauche de la grille (coordonnées 0,0). La procédure CoordSouris se présente alors comme suit :

 
Sélectionnez
procedure TMonFormulaire.CoordSouris(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var sCol, sLig : Integer;
begin
    With MaGrille do
    begin
       Cells[1,2]:='X ='+IntToStr(X);
       Cells[1,3]:='Y ='+IntToStr(Y);
       MouseToCell(X, Y, sCol, sLig);
       Cells[0,0]:='C '+IntToStr(sCol)+' - L '+IntToStr(sLig);
    end;
end;

Un appui sur la touche F9 lance l'exécution et permet de vérifier le bon fonctionnement du projet.

Image non disponible

IV-3. Bilan

Dans son état actuel, le projet construit une grille complètement remplie et renseignée.

La position de la souris est détectée et affichée sous les formes de coordonnées graphiques (X et Y) et logiques (colonne, ligne).

Lors de la prochaine étape, la position de la souris sera mise en valeur par l'introduction de couleurs et de lignes. Chaque cellule pourra en outre être modifiée indépendamment.


précédentsommairesuivant

Copyright © 2010 Dimanche2003. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.