Sûrement un truc tout bête, mais si quelqu'un peut m'éclairer...
Je cherche à connaitre les coordonnées (colonne, ligne) de la cellule sur laquelle se trouve le curseur de la souris.
Merci et bonne année.
Sûrement un truc tout bête, mais si quelqu'un peut m'éclairer...
Je cherche à connaitre les coordonnées (colonne, ligne) de la cellule sur laquelle se trouve le curseur de la souris.
Merci et bonne année.
Hello,
sur un clic ou sur survol ?
sur un clic exemple :
Ami calmant, J.P
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 procedure TMainForm.StringGridClick(Sender: TObject); begin Statusbar.SimpleText := Format('Column %d, row %d, text: "%s"', [StringGrid.Col, StringGrid.Row, StringGrid.Cells[StringGrid.Col, StringGrid.Row]]); end;
Bonjour,
Le grid propose également une méthode MouseToCell qui fonctionne bien avec les onMouseOver, onMouseDown etc. Il faut que les coordonnées X, Y de la souris aient été transposées dans la zone client du grid comme c'est le cas avec ces méthodes.
Salutations.
Bonsoir,
Merci de votre réponse rapide.
La solution que vous me proposez est efficace, mais le menu popup que contient la StringGrid semble bloquer MouseToCell() ou StringGrid.Cells().
Je ne sais pas comment contourner le problème pour avoir les coordonnées de la cellule située sous la souris quand je déclenche le sous-menu.
Et je ne sais pas non plus me servir du paramètre Sender qui pourrait sembler utile.
Désolé
hello,
si il y a un menu popup affecté à la stringgrid, il faut ne plus l'affecter à la stringgrid et le déclencher sur l'événement MouseDown par exemple.
voici un exemple :
sur l'événement mousedown on affiche la ligne et la colonne de la StringGrid dans une barre de status et si c'est un click droit on affiche le menu popup :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 procedure TMainForm.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var P: TPoint; Ligne,Colonne : Integer; begin StringGrid1.MouseToCell(X,Y, Colonne, Ligne); Statusbar.SimpleText := Format('Colonne %d, Ligne %d', [Colonne,Ligne]); if Button = mbRight then begin P.X := X; P.Y := Y; P := StringGrid1.ClientToScreen(P); PopupMenu1.PopUp(P.X, P.Y); end; end;
Ami calmant, J.P
Chapeau, vous ne dormez jamais, les gars.
En tout cas merci beaucoup pour la réponse.
Je pense que je vais arriver à m'en sortir avec cette nouvelle piste.
Merci Jurassic.
Partager