Bonjour à tous,
Comment savoir si une fenêtre est créée / affichées, je m'explique:
Quand je crée une fenêtre avec
form1 := tform1.create(self) - self étant une fenêtre parent, je crée ma fenêtre bien
si dans mon code je teste
assigned(form1), j'aurai True, bien.
si dans l'évenement OnClose de Form1 il y a
Action := cafree pour détruire la fenêtre, celle-ci sera détruite, mais la valeur du pointeur Form1 ne sera pas mise à nil, et dans ce cas, si je teste
assigned(Form1) j'aurai True alors que la fenetre n'existe plus. En fait la procedure free détruit l'objet et libère l'expace mais ne met pas le pointeur à nil.
En fait, je veux enabler/disabler des actions (boutons, menus, ...) dans une forme si d'autres forms sont présentes (Action1.enabled := True/False), mais comment être sûr que les fenetres sont présentes
assigned(xxx) peut me retourner une valeur fausse.
Une solution serait de renseigner une variabl dans
form1.create : form1_aff = true et dans form1.destroy : form1_aff=false, et je pourrais faire
action1.enabled := not form1_aff, ... et ainsi de suite pour les autres forms, mais ce n'est pas très élégant.
L'autre solution serait de boucler sur toutes les forms de l'application, ça ne me plait pas non-plus.
Avez-vous une idée ?
Bonne journée à tous.