Bonjour, je développe sous c++ builder 6. Je voudrai insérer une ligne à un index i voulu dans String Grid. Merci de m'aider.
Bonjour, je développe sous c++ builder 6. Je voudrai insérer une ligne à un index i voulu dans String Grid. Merci de m'aider.
Bonjour,
voici le code à utiliser :
Je n'ai pas tester ce code, il peut donc y avoir quelques modification à y apporter
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void AjouterLigne(int numLigne,TStringGrid * monStringGrid) { int i ; monStringGrid->RowCount++ ; for(i=monStringGrid->RowCount;i>numLigne;i--){ monStringGrid->Rows[i] = monStringGrid->Rows[i-1] ; } }![]()
Salut !
Il suffirait de dériver de TStringGrid.
La déclaration peut se faire dans l'header de la fiche principale.
Cette classe ne peut jamais être instanciée (constructeur privé), mais peut néanmoins être utilisée lors d'un transtypage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class jStringGrid : public TStringGrid { private : __fastcall jStringGrid(TWinControl *AOwner); public : __fastcall ~jStringGrid(); void __fastcall AddRow(int Index); };
Cela permet d'avoir accès à une méthode de TCustomGrid : MoveRow.
Voila sa méthode (dans le .cpp de la fiche principale):
On dispose de quelque chose de très simple à utiliser :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void __fastcall jStringGrid::AddRow(int Index) { RowCount++; MoveRow(RowCount-1, Index); }
A plus !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void __fastcall TForm1::SpeedButton1Click(TObject *Sender) { ( (jStringGrid*)StringGrid1 )->AddRow(3); }
Bonjour,
c'est très simple, monStringGrid->RowCount++ ; permet de rajouter une ligne au StringGrid
ensuite la boucle for vas permettre de copié l'avant dernière ligne dans la dernière ligne, puis la ligne d'au dessus dans l'avant dernière ligne et ainsi de suite jusqu'à la ligne ou l'on voulais insérer la nouvelle ligne.
Sinon la solution d'henderson est encore plus facile à utiliser je pense![]()
Ok, je pense avoir saisi le principe. Simplement quand je fais un ajout, il me créé une nouvelle ligne avec à l'intérieur le nom des champs de mon TStringGrid ( par exemple Nom, Prenom ect )... comment on fait pour les enlever? j'imagine qu'il y a un clear() à mettre quelque part..
Sinon, j'ai essayé la méthode d'henderson, que je comprend pas encore tout à fait mais elle marche
Partager