cs_fidji
Messages postés32Date d'inscriptionvendredi 10 janvier 2003StatutMembreDernière intervention10 mai 2008
-
27 avril 2007 à 11:39
cs_germainm
Messages postés7Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention 4 septembre 2007
-
18 juin 2007 à 04:37
Bonjour, J'ai un problème lié à la construction et destructions de composants dynamiquement.
Lorsque je veux détruire le composant crée dynamiquement self.destroy, il veut terminer la procédure appelée (passer sur le end; de la procédure qui appel la fermeture du composant).
Mais vu qu'il a été détruit il me crée une erreur d'accès à la mémoire...
Alors je sais que c'est possible car si je crée une form dynamiquement et que je la quitte avec la croix Windows [x] ça marche à tout les coups et sans erreurs.
Mais si je clique sur un bouton contenant formDynamique.close; il me ferme la form et me génère une erreur lorsqu'il revient sur le END; du bouton (qui a été supprimé en même temps que la form).
Nb: que je n'ai qu'un message d'erreur (impossible à récupérer avec un try vu sa position?) et que cela n'altère pas le fonctionnement du programme.
procedure TfrmCreation.fraMenubbtnMenuClick(Sender: TObject);
begin frmMenu.show;
self.destroy; // self.close;<-- 2 (si self.close) il passe par form.close et plante aussi en n°3
end;<-- 3 (Plantage)
OU
procedure TfrmCreation.FormClose(Sender: TObject;
var Action: TCloseAction);
begin frmMenu.show;
self.Destroy; <--2
end;<-- OK<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
MERCI d'avance
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 27 avril 2007 à 12:06
salut,
tu ne peux pas détruire un compo depuis lui-même (intérieur).
Pour detruire une form lors de sa fermeture, utilise OnClose. Set Action a caFree
et puis, pour la fermer (detruire) utilise "close"
(la lib vas détruire de manière différée la form)
donc,
remplace
self.Destroy; <--2
par
action := caFree;
bon code !
Loda
PS: si tu utilise souvent la form, prefere la cacher plustot que la detruire.
Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
cs_fidji
Messages postés32Date d'inscriptionvendredi 10 janvier 2003StatutMembreDernière intervention10 mai 2008 27 avril 2007 à 15:13
Merci beaucoup,
il me reste a faire pareil avec un groupbox contenant des composants... il faut que j'efface les composants a l'intérieur avec les memes contraintes, et donc les mêmes problèmes, mais pour ce qui est de ma form ça marche nikel ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?