Comment vérifier si une form existe [Résolu]

Messages postés
19
Date d'inscription
mardi 7 juin 2005
Dernière intervention
19 août 2006
- - Dernière réponse : cs_zarkor
Messages postés
19
Date d'inscription
mardi 7 juin 2005
Dernière intervention
19 août 2006
- 19 août 2006 à 15:10
Voila j'utilise le code suivant pour dupliquer et indexer une form :



Dim Form() as Form1
dim i as integer

redim Form(1 to 10) as form1
set Form(i) = new form1
Form(i).caption = Titre (i)
Form(i).show

Le truc c'est que si par exemple la form(3) existe déja quand je demande de la créer, il en créé une nouvelle et je ne peux plus controler l'ancienne en utilisant form(3).

En gros ma question c'est comment vérifier l'existance d'un form avant de la créer?

Merci
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
3
Merci
C'est ce que je te disait, dans le cas de cet exemple, le tableau ne sert à rien.

Si tu met ce code tel quel dans une procédure, le tableau est recréer et redimentionné à chaque appel de la procédure. A la fin de la procédure, il est automatiquement détruit, et tu perd donc les références sur tes fenetres.

Au premier appel, tu crée la form n°1. A la fin de la procedure, tu perd la référence à cette form. Donc au second appel, ton tableau venant d'etre créé, est parfaitement vierge. Tu vas donc créer une "seconde" form n°1.

Il faudrait que tu déclare ton tableau en variable globale, que tu le dimentionne 1 seule fois dans une phase d'initialisation voire directement à la déclaration.

Ensuite dans la procedure que tu appele pour créer les forms, tu ne garde que ce qui est entre le If et le End If

Sevyc64  (alias Casy)
<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #

Merci cs_casy 3

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

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de cs_casy
Messages postés
19
Date d'inscription
mardi 7 juin 2005
Dernière intervention
19 août 2006
3
Merci
Oui effectivement je m'en suis apperçu en essayent de mieux comprendre le code (il est pas de moi ).

Donc je viens de trouver une solution un peu boucher :

Dim Form(99) As Form2

Private Sub Command2_Click()
    On Error Resume Next
    Unload Form(3)
    Form(3).Caption = "Titre3"
    Form(3).Show
    End If
End Sub

Unload Form(3) me génère une erreur si la form(3) n'existe pas encore donc j'avais rajouté un On Error Resume Next.

Puis du coup j'ai réessayé ta solution à toi :

Dim Form(99) As Form2

Private Sub Command2_Click()
    If Form(3) Is Nothing Then
    Set Form(3) = New Form2
    Form(3).Caption = "Titre3"
    Form(3).Show
    End If
End Sub

Et la miracle ça marche
Merci !

Merci cs_zarkor 3

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

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de cs_zarkor
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
0
Merci
Déjà, tu peux essayer comme ça

Dim Form() as Form1
dim i as integer

redim Form(1 to 10) as form1
If Form(i) Is Nothing Then
    set Form(i) = new form1
    Form(i).caption = Titre (i)
    Form(i).show
end if

Et au passage, je sais pas si le code que tu donne est juste un exemple, mais tu risque d'avoir un problème d'indices. Deplus ton tableau ne sert à rien dans ce cas là.

Sevyc64  (alias Casy)
<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Commenter la réponse de cs_casy
Messages postés
19
Date d'inscription
mardi 7 juin 2005
Dernière intervention
19 août 2006
0
Merci
Non c'est juste un exemple, je remplace le i par une valeur quelquonque.

Bon sinon le test If Form(i) Is Nothing Then est accepté (pas de message d'erreur)
par contre ça ne marche pas, si je lui redemande d'ouvrir une fenetre avec le meme indice, il me l'ouvre quand même.

Merci quand même
Commenter la réponse de cs_zarkor
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
0
Merci
salut,
essaye avec un tableau de type (form / boolean <- existance)

++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
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.