Fermer toutes les fenêtre créé dynamiquement

Résolu
Signaler
Messages postés
193
Date d'inscription
dimanche 16 décembre 2001
Statut
Membre
Dernière intervention
29 juillet 2015
-
Messages postés
193
Date d'inscription
dimanche 16 décembre 2001
Statut
Membre
Dernière intervention
29 juillet 2015
-
Bijour,
J'ai un petit problème avec mon appli en cours. Je n'arrive pas à fermer les form automatiquement lorsque ma form principale se ferme.
Je m'explique: Mon appli regarde dans une BDD s'il y a des messages à afficher (en gros); si oui, je génère dynamiquement une nouvelle form à partir d'une existante (appelée EcranPostIt et générée via une variable tableau oForm() as New EcranPostIt). Donc pour ce faire je fais un ReDim sur oForm pour pouvoir afficher une nouvelle fenêtre.
Maintenant, pour la fermer, j'utilise un controle image avec une image dedans (c'est une fenêtre du type ReyXPBasics donc je suis en BorderStyle=0) dont le code est simplement Unload Me. Jusque là tout marche bien.
Si maintenant, je veux quitter mon programme (même si des "post-it" sont encore affichés), je ferme l'écran principal (plutart il sera en systray) appelé EcranPrincipal (c'est original, non?). Dans son QueryUnload j'ai mis le code suivant:

On Error Resume Next
    For i = LBound(oForm()) To UBound(oForm()) + 1
        'Set oForm(i) = Nothing
        Unload oForm(i)
        DoEvents
    Next i

"i" est une variable integer. J'ai même essayé le 1er code de ce site (la ligne en commentaire) mais çe ne fonctionne toujours pas. Parce qu'avec cette fonction, il ne ferme que la dernière affiché, les autres reste telle quelle et le programme reste en mémoire.

J'espère que j'ai été bien clair et que quelqu'un aura une solution. S'il faut que je mette du code en plus, dites le.
Merci d'avance

--------------------------------------------------------------------------
Visitez mon site sur http://bp-software.ifrance.com/

9 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Bon j'ai testé une création dynamique de 3 Forms supplémentaires basées sur Form1.
Voici mon code pour fermer toutes les Forms :

    Dim oForm As Form

For Each oForm In VB.Forms
    Unload oForm
Next oForm

@++


  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
Messages postés
193
Date d'inscription
dimanche 16 décembre 2001
Statut
Membre
Dernière intervention
29 juillet 2015

Scusez pour la grosse faute
remplacer "plutart" pas "plus tard", ça fait mieu quand même

--------------------------------------------------------------------------
Visitez mon site sur http://bp-software.ifrance.com/
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Samlut,

oui c'est logique car tu commences à fermer la première form instancié (avec LBound)
Une chose : pourquoi    ... To UBound(oForm()) + 1   ?? pourquoi + 1

Sinon, pour ton souci :
    For i = U Bound(oForm()) To LBound(oForm()) Step -1

@++

<hr size ="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
Messages postés
193
Date d'inscription
dimanche 16 décembre 2001
Statut
Membre
Dernière intervention
29 juillet 2015

Pour le +1 c'est quand je cherchais une solution à mon problème, c'était pour pour être sur qu'il passe en revue toutes les form.
Je viens d'essayer et ça fait toujours pareil; de plus c'est toujours la même form qui se ferme.
Pour faire apparaitre et disparaitre les form, j'utilise une animation (trouvé sur ce site) qui fait un fondu en opacité. Et ça prend un peu de temps. Peut-être que c'est à cause de ce temps que ça ne marche pas bien?

S'il le faut, je peux mettre un zip de mon projet sur la toile, comme ça c'est plus explicite

--------------------------------------------------------------------------
Visitez mon site sur http://bp-software.ifrance.com/
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Je vais faire 2   3 tests avec une autre façon.
Sinon, oui, vire temporairement l'effet de fondu, j'ai déjà eu des soucis avec ces APIs. Au moins on saura si c'est cela qui provoque le problème.

@++


  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
Messages postés
193
Date d'inscription
dimanche 16 décembre 2001
Statut
Membre
Dernière intervention
29 juillet 2015

OK, voici le lien du zip: http://membres.lycos.fr/tioneb592/LANews.zip

--------------------------------------------------------------------------
Visitez mon site sur http://bp-software.ifrance.com/
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Peux pas testé le zip, je suis au boulot, et bloqué au niveau de l'USB pour transfert sur mon PC

@++


  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
15
Salut à tous,

Il me semble que Jmfmarques avait répondu aussi à un topic il n'y a pas très longtemps sur une même question...D'ailleurs ce même topic était devenu un "exercice"...

A+
Exploreur

 
Messages postés
193
Date d'inscription
dimanche 16 décembre 2001
Statut
Membre
Dernière intervention
29 juillet 2015

Excellent, ton dernier code fonctionne! J'avais essayé un "For Each" mais ça n'avais pas fonctionné. Merci beaucoup
Sinon bon courage pour ton boulot, ça doit pas être marrant de bosser le dimanche!
Enfin, je laisse quelque temps le zip en ligne (avec le problème) pour ceux qui voudrait.... ben je sais pas moi, pour voir ce qu'il y a dedans!

Encore merci

--------------------------------------------------------------------------
Visitez mon site sur http://bp-software.ifrance.com/