Savoir si un formulaire est déjà ouvert! [Résolu]

Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Dernière intervention
27 janvier 2014
- - Dernière réponse : PCPT
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
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.
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
3
Merci
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]

Dire « Merci » 3

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

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

Commenter la réponse de PCPT
Messages postés
221
Date d'inscription
mercredi 20 février 2008
Dernière intervention
17 mars 2012
0
Merci
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
Commenter la réponse de l0r3nz1
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Dernière intervention
27 janvier 2014
0
Merci
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.
Commenter la réponse de js8bleu
Messages postés
221
Date d'inscription
mercredi 20 février 2008
Dernière intervention
17 mars 2012
0
Merci
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

@+
Commenter la réponse de l0r3nz1
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
0
Merci
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

++
Commenter la réponse de PCPT
Messages postés
221
Date d'inscription
mercredi 20 février 2008
Dernière intervention
17 mars 2012
0
Merci
merci pour le conseil.

désolé pour l'erreur, il fallait:
rep = (oForm .visible) and (not( oForm .visible))
Commenter la réponse de l0r3nz1
Messages postés
221
Date d'inscription
mercredi 20 février 2008
Dernière intervention
17 mars 2012
0
Merci
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.
Commenter la réponse de l0r3nz1
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
0
Merci
^^

pas de prob'
Commenter la réponse de PCPT

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.