Empêcher une fenêtre de s'ouvrir plusieurs fois en VB6 ?

Résolu
cs_cotmar Messages postés 71 Date d'inscription vendredi 13 septembre 2002 Statut Membre Dernière intervention 9 mars 2009 - 5 avril 2006 à 10:57
cs_cotmar Messages postés 71 Date d'inscription vendredi 13 septembre 2002 Statut Membre Dernière intervention 9 mars 2009 - 22 avril 2006 à 14:44
Bonjour,

Ma question est double en fait. Il s'agit ici de VB6.

La première partie de ma questions est la suivante : à l'ouverture d'un application, je voudrais empêcher que l'utilisateur puisse ouvrir plusieurs fois la même fenêtre à partir du menu.

La seconde partie de ma question concerne la fermetue : je voudrais qu'il ne soit pas possible de fermer l'application si jamais une des fenêtre est encore ouverte.

Par avance je vous remercie.

Marco.

Cotmar

7 réponses

cs_cotmar Messages postés 71 Date d'inscription vendredi 13 septembre 2002 Statut Membre Dernière intervention 9 mars 2009
5 avril 2006 à 18:14
Bonjour,

En fait j'ai presque honte de moi. Mais la solution que je viens de trouver est la plus simple qui soit : je fais un Load de ma form. Celà était dû aussi à une mauvaise compréhension de ma part par rapport à la demande initiale du client. Je pense aussi que j'ai peut être cherché quelquechose de trops compliqué au départ. Mea culpa donc.

Sinon, j'ai bien testé ce que vous m'avez donné comme idées et c'est vrai que c'est très intéressant. Je pense que ça va quand même bien me servir pour une prochaine fois. En imaginant par exemple que l'on doive limiter le nombre d'apparitions d'une fenêtre... Par exemple.


La seconde partie du problème m'a été donnée par un collègue de travail :


'Déclaration au niveau global à la fenêtre d'un booléen
Private blnNotFin As Boolean

'Dans les procédures...
Private Sub Form_Unload(Cancel As Integer)
If Forms.Count = 1 Then
Cancel = blnNotFin
If Not blnNotFin Then
'Liste d'actions à faire avant de quitter...
End If
Else
Cancel = True
End If


End Sub


Qu'en pensez vous ?

Cotmar
3
jannoman Messages postés 256 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 20 février 2008 1
5 avril 2006 à 11:00
tu te fais une variable globale booléenne par fenetre que tu as
isopenform1 = false initialement
au menu :
if not isopenform1 then
isopenform1 = true
load form1
form1.show
end if

et à form1_queryunload :
isopenform1 = false

idem avec les autres fenetres. place tes variables booléennes globales dans un module

. A+. Thomas.
0
cs_cotmar Messages postés 71 Date d'inscription vendredi 13 septembre 2002 Statut Membre Dernière intervention 9 mars 2009
5 avril 2006 à 11:25
Bonjour,

Merci, je vais essayer cette solution.
Voici ce que j'avais commencé à faire de mon côté en attendant.

Private Sub CmdGestionDesOperations_Click()
'Option 2
Dim MyGestOpe As frmGestOpe
Set MyGestOpe = New frmGestOpe
If MyGestOpe.Count = 0 Then
MyGestOpe.Show
End If
End Sub

Apparemment le count renvoie le nombre de contrôle contenus dans la fenêtre.

Comment obtenir le nombre d'instances de la fenêtre ?

Cotmar
0
cs_ketchoupi Messages postés 14 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 23 novembre 2008
5 avril 2006 à 12:38
Salut,

Pour ton problème tu as 2 solutions :

1.Mettre tes fenêtres en modal ( cad que tu ne peut pas accéder aux autres fenetres temps que n'a pas fermer celle ci)

2. Faire un module avec un compteur
exemple :
dans le moduleFenetre
public compteurForm as integer

a chaque fois que tu ouvre une fenetre tu incremente le compteur de 1 et a chaque fois que tu ferme une fenetre -1

Comme ca tu fait un controle tant que compteurform <>0 tu interdiit le close de ton application

Ketchoupi
0

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

Posez votre question
cs_cotmar Messages postés 71 Date d'inscription vendredi 13 septembre 2002 Statut Membre Dernière intervention 9 mars 2009
5 avril 2006 à 14:24
Merci je viens de trouver une solution.
A très bientôt.

Cotmar
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
5 avril 2006 à 17:37
Il serait de bon ton de donner cette solution, qu'elle serve à d'autre .. et eventuellement qu'on la commente ...

CR
0
cs_cotmar Messages postés 71 Date d'inscription vendredi 13 septembre 2002 Statut Membre Dernière intervention 9 mars 2009
22 avril 2006 à 14:44
Bonjour,

Je reviens après pas mal de temps sur ce sujet.

Përsonne n'a trouvé à le commenter ou à faire des observatiuons dessus ?

A bientôt.

Cotmar
0
Rejoignez-nous