Bonjour,
dans l'aide à propos de cette chose, je peux lire
Bien.Envoyé par aide Lazarus
En plus on peut le demander gentiment :
MonComposant.DestroyComponents;Et moi pour assurer le coup, j'utilise les deux :Envoyé par aide Lazarus
Mais quand je recrée MonComposant, je me fais envoyer sur les roses parce que les sous-composants existent déjà et ça me parle de duplicate name et moi je ne comprends pas que je puisse avoir quelque part en mémoire le nom de sous-composants dont le parent a été détruit et ses enfants avec lui.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MonComposant.DestroyComponents; MonComposant.Free;
Ou alors c'est que le boulot est mal fait ?, ce que je pense de + en +, regardez, dans une boucle, je fais
et comme il n'y a qu'un composant, i est à 0, et les components, euh, mais je vous laisse regarder les résultats :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 showmessage('thisobject + i + cc '+thisobject.Name +' '+inttostr(i)+' '+inttostr(ComponentCount)); thisobject.DestroyComponents; Application.ProcessMessages; showmessage('thisobject + i + cc '+thisobject.Name +' '+inttostr(i)+' '+inttostr(ComponentCount));
40 c'est 12 sub-composants par panel + les 3 panels eux-mêmes + 1 sur-panel pour emballer tout ça, soit 12x3 + 3 + 1 = 40
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 retour de SM : 'thisobject i + cc pnlhosting0 0 40' thisobject.DestroyComponents; Application.ProcessMessages; retour de SM : 'thisobject i + cc pnlhosting0 0 40' <-- et toujours 40 !
Et donc si 40 est renvoyé, c'est ça signifie que rien n'est détruit !
J'ai même essayé avec
Alors leur DestroyComponents, je ris...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 (pnlCentre.Controls[i] as TPanelex).DestroyComponents; Application.ProcessMessages; retour de showmessage : 'thisobject i + cc pnlhosting0 0 40' <-- et toujours 40 !
Mais jaune puisqu'après je me prends une erreur "A component named "pnlinfos0" already exists" et le programme se vautre...
Et aussi, on ne nous dit pas dans l'aide certains comportements qui se rencontrent IRL, par exemple ce TPanel gris argent posé en mode design en bas à droite d'une fiche
et dont je ne sais pas d'où il tire cette couleur puisqu'il est configuré avec Color = clDefaut (= gris clair, pas celui qu'on voit là), BevelColor = clDefault, ParentColor = False et ParentBackGround = False.
Alors ça, plus le coup de la hauteur pas ou mal prise en compte (vu il y a deux ou trois jours) plus les destructions pas faites, je trouve que c'est normal que je passe des semaines pour faire des choses qui devraient être réglées en deux jours...
Jusqu'à ce que j'abandonne, parce que si je ne peux pas supprimer les objets créés dynamiquement, mon prog est bon pour la poubelle.
Une idée ?
Partager