videaste95 je ne sais rien ! | Bigdai a écrit :
void __fastcall TForm1::DrawGrid1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if(Button == mbRight) { int Column; int Row; DrawGrid1->MouseToCell(X, Y, Column, Row); StatusBar1->SimpleText = IntToStr(Column) + ',' + IntToStr(Row); }
C'est un morceau de programme que j'ai trouvé sur le net pour faire fontionner le clic droit de la souris mais le statusbar1 il me pose des probleme car il est pas reconnu.
|
Normalement avec X et Y, tu dois trouver la case où se situe le pointeur de la souris. Je ne me souviens pas pourquoi j'ai fait le calcul de l'emplacement de la case plutôt que d'utiliser MouseToCell(). La barre d'état ne sert que pour indiquer cette position (Column et Row). Ci-dessous un exemple de traitement du clic droit qui fonctionne en BCC 6.
Code :
- void __fastcall TForm1::DrawGrid1MouseUp(TObject *Sender,
- TMouseButton Button, TShiftState Shift, int X, int Y)
- {
- if(Button == mbRight)
- {
- PasDeClic = true; // pour éviter une action pendant le traitement
- DrawGrid1->Col = X / lg; // lg = largeur et hauteur d'une case
- DrawGrid1->Row = Y / lg;
- if(TabCase[DrawGrid1->Col][DrawGrid1->Row] == 0) // si la case est vierge on y place un drapeau (-1)
- {
- TabCase[DrawGrid1->Col][DrawGrid1->Row] = -1;
- nbMinesLaissees--;
- TestFin();
- }
- else if(TabCase[DrawGrid1->Col][DrawGrid1->Row] == -1)
- {
- TabCase[DrawGrid1->Col][DrawGrid1->Row] = 0;
- nbMinesLaissees++;
- }
- Edit1->Text = AnsiString().sprintf("% 4d", nbMinesLaissees); // Compteur de mines
- DrawGrid1->Invalidate();
- }
- PasDeClic = false;
- }
|
Message édité par videaste95 le 13-04-2006 à 00:48:39
|