Savoir si un formulaire est déjà ouvert!

Résolu
js8bleu Messages postés 576 Date d'inscription samedi 14 octobre 2006 Statut Membre Dernière intervention 27 janvier 2014 - 14 janv. 2011 à 17:21
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 16 janv. 2011 à 15:03
Bonjour,

en cliquant sur le bouton "Destockage" de Form1, comment tester/savoir si Form2 est pas déjà ouvert.

NB : Les deux formulaires sont dans la même application.

Merci d'avance.

Cordialement.

8 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
14 janv. 2011 à 20:19
salut,

l0r3nz1 -> la question est en VB6

js8bleu -> toutes les forms "chargées" sont dans la collection 'forms'. si elle n'y est pas, elle n'est pas chargée
http://www.codyx.org/snippet_form-chargee-form-visible_210.aspx

++
[hr]
3
l0r3nz1 Messages postés 218 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 17 mars 2012
14 janv. 2011 à 18:28
Salut,
1) as tu parcourru les membres de la classe form:
http://msdn.microsoft.com/fr-fr/library/system.windows.forms.form_members.aspx

1-bis)tu pourrais utiliser la propriété "windowstate" d'une façon ou l'autre. Je crois que cette propriété indique seulement l'état plein écran ou mini de la fenetre mais si cela génère une erreur, je pense, et tu sais que ta fenetre est fermée.

2) t'es t'il possible de créer une classe contenant tes formulaires, exemple:

class monForm1
'avec comme constructeur
monForm1(Form1 as Form, sousFormulaire as Form){...}
'qui te permettrait de mettre les deux formulaires en relation

et class monForm2
'avec comme constructeur
monForm2(Form2 as Form, formulaireMaitre as Form)

3) sale méthode mais au cas ou tu tente d'améliorer un programme dans lequel c'est le bordel et que tu veux éviter d'ajouter des bugs, tu créés un module spécialement pour des variables et dans ce module tu mets une variable, booleen, tableau de string, ... ce que tu veux qui pourra t'indiquer les formulaires ouverts
0
js8bleu Messages postés 576 Date d'inscription samedi 14 octobre 2006 Statut Membre Dernière intervention 27 janvier 2014 2
14 janv. 2011 à 23:46
Bonjour l0r3nz1 et PCPT et Merci pour votre intérêt. Le code est effectivement pour du vb 6.0 . Ton code marche parfaitement PCPT . Merci beaucoup.

Cordialement.
0
l0r3nz1 Messages postés 218 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 17 mars 2012
15 janv. 2011 à 11:50
En effet, "Forum->visual Basic 6" ça veut dire qu'on est en VB6. alors soit je suis trop nul soit c'est encore une conspiration de la cia contre moi.

la proposition 3 concernant le module contenant des variables reste valable, c'est pas super question développement mais cela peut faire gagner au moins 0,0000000000001 seconde ;)

j'aurais proposé sinon d'utiliser la gestion d'erreur, qui donne un truc du genre:
Function FormIsLoaded(oForm As Form) As Boolean
dim rep as Boolean
rep = false
on error goto error_noformload
'renvoi une erreur et sort ou affecte rep a true
rep = (oForm .visible) or (not( oForm .visible))
error_noformload:
FormIsLoaded= rep
End Function

rep = (oForm .visible) or (not( oForm .visible)) est peut être a revoir mais l'idée c'est d'éviter de boucler

@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
15 janv. 2011 à 12:01
l0r3nz1 -> l'accès à toute propriété d'une form "non chargée" va la charger. c'est pour çà qu'on boucle uniquement sur la collection de celles chargées, qui contient donc en général maximum quoi... 2 voire 3 forms simultanément?...

ton code ne fera pas d'erreur, mais la visibilité ne nous apporte rien sur l'état de chargement, c'est 2 choses bien différentes.

en plus tu testes true or false, ou false or true. donc true dans les 2 cas

++
0
l0r3nz1 Messages postés 218 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 17 mars 2012
16 janv. 2011 à 12:20
merci pour le conseil.

désolé pour l'erreur, il fallait:
rep = (oForm .visible) and (not( oForm .visible))
0
l0r3nz1 Messages postés 218 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 17 mars 2012
16 janv. 2011 à 12:24
mais non! il ne fallait rien du tout, soit cela faisait une erreur et on la gérait, ce qui n'est pas le cas. alors j'ai juste tout faux...
parce que:
"l'accès à toute propriété d'une form "non chargée" va la charger."

erreur que je ne ferait plus, merci.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
16 janv. 2011 à 15:03
^^

pas de prob'
0
Rejoignez-nous