Bonjour,
Je fabrique des composants suivant le principe suivant :
J'ai un TList qui stocke d'autre Tlist qui eux pointent vers les composants que je crée (un TList contient tous les composants d'un nouvel onglet d'un pagecontrol).
Voici un bout du code :
Dans le .h :
Dans le cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part TList *PageList;
Jusque la pas de problème mais pour supprimer les composants dans le FormClose :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 TList *ListeComp = new TList(); TTabSheet *pTabSheet = new TTabSheet(PageControl1); pTabSheet->PageControl = PageControl1; //je ne sais pas si cette ligne est utile ListeComp->Add(pTabSheet); TScrollBox *TempScrollBox3 = new TScrollBox(pTabSheet); ListeComp->Add(TempScrollBox3); PageList->Add(ListeComp); PageControl1->ActivePage = pTabSheet;
Toutes ces lignes passent correctement mais le programme plante jusqte après. J'ai essayé de mettre un bouton qui supprime mes composants avec ce bout de code, mais les composants ne disparaissent pas et le programme plante :
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 TList *TempList; for (int A = 0; A < PageList->Count; A++) { TempList = (TList *)PageList->Items[A]; for (int I = 0; I < TempList->Count; I++) { delete TempList->Items[I]; } } TempList = NULL; for (int I = 0; I < PageList->Count; I++) { delete (TList *)PageList->Items[I]; } delete PageList;
Je ne comprend plus. Comment faire pour garder les pointeur et détruire les composants pointé par ceux-ci sachant que je ne connait pas par avance le nombre de composants ni leur type, ni leur nom?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 TList *TempList; for (int A = 0; A < PageList->Count; A++) { TempList = (TList *)PageList->Items[A]; for (int I = 0; I < TempList->Count; I++) { delete TempList->Items[I]; } } TempList = NULL;
Merci
Partager