J'ai repris le projet que tu as envoyé tout a l'heure, j'ai juste enlevé l'option goEditing et chez moi ça fonctionne
Version imprimable
J'ai repris le projet que tu as envoyé tout a l'heure, j'ai juste enlevé l'option goEditing et chez moi ça fonctionne
Alors je pense que je vais devenir fou.
Je ne comprend pas pourquoi je n'y arrive pas. Je vais chercher!
Merci pour votre aide.
Bonjour,
Cela fait longtemps que je ne m'était pas re-penché sur ce problème de suppression multiple.:roll:
Je me suis remis dessus et j'ai fait une constatation assez surprenante :
Je peut supprimer plusieures lignes sans aucun soucis:yaisse2:, mais pour cela il faut que je les sélectionnent sans appuyer sur "Ctrl".:aie:
En effet si je fait une sélection à la souris directement, alors il n y a pas de soucis je peut supprimer autant de ligne que je veux à la fois...
En revanche si j'utilise le bouton "Ctrl" cela bloque (seule la dernière ligne sélectionnées est supprimée.)
Quelqu'un aurait t'il une idée sur le pourquoi et surtout le comment le résoudre?
Au fait j'ai modifié dans le code quelque chose, ce n'est plus la fonction StringGrid1ContextPopup qui est utiliser mais via un popupmenu (pour une question de visualisation) cette fonction la supprimeruneligne1Click... Ce qui ne change pas grand chose au problème...
Merci par avance pour votre aide.
voici comment je supprime une ligne,
tu cliques sur une ligne , tu sauvegarde la position Y
ARow = Y
ou tu met ce code dans l'évènement OnSelect de ta Grille
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 AnsiString a,b; int y ; for(y=ARow-1;y<(Grille->RowCount-1);y++) { int x=0; for( x=0; x< Grille->ColCount; x++) { a = Grille->Cells[x][y]; // --> inutile sert a vérifier la copie de b b = Grille->Cells[x][y+1]; Grille->Cells[x][y] = b; } } Grille->RowCount--;
pour le problème du ctrl ! je vas vérifier
mais d'ou te vien le ARow?
Je ne connais pas... il faut rajouter une librairie?
Le ARow vient, comme le ACol, de certains événement du StringGrid, dans ces événement la ligne et la colonne de la cellule sélectionné sont indiqué dans les paramètre ARow et ACol
sorry , j'ai pas expliqué
j'ai fais une fonction avec passage de paramètre
recherche la ligne a supprimer
suppression de la ligneCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 bool trouver=false; int i=0; for(; i<Grille->RowCount && trouver==false; i++) { if(Grille->Cells[0][i]== Edit1->Text) trouver = true; } if(trouver) { SupprimerLigne( i ); Grille->RowCount--; }
:salut:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 void TForm1::SupprimerLigne(int ARow) { AnsiString a,b; int y ; int x ; for(y=ARow-1;y<(Grille->RowCount-1);y++) { x=0; for( ; x< Grille->ColCount; x++) { a = Grille->Cells[x][y]; // sert a vérifier le fonctionnement b = Grille->Cells[x][y+1]; Grille->Cells[x][y] = b; } } }