J'ai cherché pendant deux heures hier soir en vain pour trouver l'origine de ce bug très personnel, donc je me permet de mettre le code ici :
Voici ce qui se passe :
J'ai un StringGrid qui affiche les données contenues dans un fichier texte comme ceci:
Quand je clique sur un bouton via un menu, je souhaite pouvoir ouvrir une nouvelle fiche vide comme ceci:
J'ai simplement fait ceci via ce code:
le problème c'est que quand je clique 4 fois sur le bouton pour ajouter une ligne il me met ceci:
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
17
18
19
20
21
22
23
24 void __fastcall TForm1::Nouveaufichier1Click(TObject *Sender) { AdvStringGrid1->FixedRows=1; AdvStringGrid1->RowCount=2; for (int vide2=0;vide2<AdvStringGrid1->ColCount;vide2++) { for(int vide=1;vide<AdvStringGrid1->RowCount;vide++) { AdvStringGrid1->Cells[vide2][vide]=""; } } TReplaceFlags Flags = Flags << rfReplaceAll; AnsiString T1 = "Qualité\n"; AnsiString T2 = "Prénom\n"; AnsiString T3 = "Nom\n"; AnsiString T4 = "Poste\n"; AnsiString T5 = "Email\n"; AnsiString T6 = "Prononciation\n"; AnsiString N = T1 + T2 + T3 + T4 + T5 + T6; AdvStringGrid1->Rows[0]->Text = N; }
Il me met donc 2 lignes de la fiche précédente...
voici le code que j'utilise pour créer une nouvelle ligne:
Sachant que dans le .h il y a donc la classe dérivée de StringGrid:
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
17 void __fastcall jStringGrid::AddRow(int Index) { /*Déplace une ligne à une nouvelle position. void __fastcall MoveRow(int FromIndex, int ToIndex); */ /*Appelez la méthode MoveRow pour déplacer la ligne d'indice FromIndex à la position spécifiée par le paramètre ToIndex.*/ RowCount++; MoveRow(RowCount-1, Index); } void __fastcall TForm1::Button1Click(TObject *Sender) { ( (jStringGrid*)AdvStringGrid1 )->AddRow(AdvStringGrid1->RowCount); // ajout de la nouvelle ligne à la "dernière ligne" }
Solution d'henderson sur un vieux sujet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class jStringGrid : public TStringGrid { private : __fastcall jStringGrid(TWinControl *AOwner); public : __fastcall ~jStringGrid(); void __fastcall AddRow(int Index); };
Partager