Comment tester si une forme est créee [Résolu]

Messages postés
637
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
- - Dernière réponse : f0xi
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
- 16 sept. 2009 à 16:04
Bonjour à tous,

Je pensai trouver une réponse sur le site ou ailleurs, mais Not trouv!
voici mon problème:

Je suis en mode SDI. J'ai plusieurs fiches non encore crées, mais référencées dans mon application et qui sont appellées en temps voulu.
Cependant, lorsque je suis sur l'une d'entre elles (Fiche 1), je peux basculer sur une autre qui n'est pas encore créee (Fiche 2)..(fiche 5) (et pas visible bien sûr). Ce ne sont pas des fiches filles.

Or je dois exécuter du code d'initialisation avant de créer l'autre fiche (Fiche 2). Je ne peux pas mettre le code dans la méthode create de la nouvelle fiche.

résumé :

Fiche 1 : a)appel fiche 2 non encore créee
b)vérification que la fiche 2 n'est pas créee (Mon problème : Qu'elle variable ou procédure utiliser?)
c)destruction ou cache la fiche 1 avant lancement création fiche 1
Fiche 2 : création, affichage
Fiche 1 détruite

je ne peux pas utiliser la propriété active de fiche 2 puisqu'elle n'est pas créee! Et le Handle de la fenêtre n'existe pas encore...
Une good idée?

Bien à vous



Jean_Jean
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26
3
Merci
if assigned(UnitX.FormX) then
UnitX.FormX.Show
else
Creation fiche...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 191 internautes nous ont dit merci ce mois-ci

Commenter la réponse de f0xi
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26
3
Merci
Delphi n'est pas prés de mourrir.

a en ecouter les ragot, delphi est mort depuis 10 ans ...
pourtant ... la license D2009 / D2010 existe et coute cher.
ça prouve qu'il y a de la demande.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 191 internautes nous ont dit merci ce mois-ci

Commenter la réponse de f0xi
Messages postés
637
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
2
0
Merci
J'ai fini par trouver. je donne la réponse pour d'autres débutant aveugles comme moi.
if FindWindowEx(0, 0, PChar(Form2), nil) <> 0
then showmessage('Fenêtre 2 inexitante')
else showmessage('Fenêtre 2 créée visible ou pas');
Bien à vous!
Jean_Jean
Commenter la réponse de cs_Jean_Jean
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26
0
Merci
la variable FormX est initialisé a Nil par defaut.

quand la fiche est créée FormX renvois l'instance TFormX.

si la fiche n'est pas créée FormX renvois donc nil.


donc comme pour les gestionnaire d'evenement (fOn...) ou pour les buffer/canvas pour le dessin, on utilise Assigned.

qui verifie que l'instance de la classe est valide et accessible.
Commenter la réponse de f0xi
Messages postés
637
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
2
0
Merci
Oui, merci Foxi pour ce rappel et précision.
Quand nous rédiges-tu un manuel d'astuces...?
ça serait bien utile pour des éternels débutants comme moi qui ne savent plus comment classer ses tonnes de papiers.
Ce qui me gêne, c'est que lorsque j'aurai fini mon projet, Delphi n'existera peut-être plus. Je suis persuadé que des communautés comme DelphiFr gardent vivant ce langage méconnu des éditeurs...
Bien à toi!
Jean_Jean
Commenter la réponse de cs_Jean_Jean