Comment fermer une form modal sans form.Hide associé à un bouton ?
cs_jamey
Messages postés8Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention31 janvier 2003
-
23 janv. 2003 à 18:22
jmdevz
Messages postés13Date d'inscriptionmardi 14 janvier 2003StatutMembreDernière intervention 5 décembre 2003
-
24 janv. 2003 à 10:14
Bonjour,
J'ai une form principale où je sélectionne par des commands l'ouverture d'autres forms que je quitte avec ''form.hide'' derrière un bouton.
Mon Problème est que ces forms filles dans leurs executions ouvrent une form ressemblant à un MsgBox où il n'y a qu'un Label temporisé dont voici le code :
frmMessage.LabelMessage.Caption = "Test en cours ..."
frmMessage.Show vbModal
Call Sleep(10000)
frmMessage.Hide
Unload frmMessage
Le programme plante sur cette form (frmMessage) qui ne disparait pas au bout des 10 sec. Je suis obligé de tuer l'application avec le bon vieux Ctrl+Alt+Suppr
tardigrade
Messages postés208Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention 2 décembre 2008 23 janv. 2003 à 18:59
Salut,
Je ne t'ecris pas pour ta question mais pour te donner un tuyau tres utile quand tu programmes sous vb.
Si tu ecris :
Private Sub Form_Load()
Do While 1
Loop
End Sub
Si maintenant tu lances le programme, il ne s'arrete jamais et c'est bien embetant. Pour arreter ton programme sans arreter vb (comme tu fais en ce moment Ctrl+Alt+Suppr) utilise Ctrl+Arrêt défil. le programme se met en pause et tu peux l'arreter sous vb.
Autre solution qui n'en est pas vraiment une. tu aurais pu ecrire:
Private Sub Form_Load()
Do While 1
DoEvents
Loop
End Sub
dans ce cas tu peux retourner sous vb pour arreter ton programme par le menu execution. a chaque tour la fonction DoEvents permet au programme de rendre la main a l'application. c'est bien pratique pour les rafraichissements de fenetres mais attention ca fait perdre du temps a ta boucle.
jmdevz
Messages postés13Date d'inscriptionmardi 14 janvier 2003StatutMembreDernière intervention 5 décembre 2003 24 janv. 2003 à 08:56
Bonjour,
le problème dans ton code c'est que ta form frmMessage est ouverte modalement, ce qui entraine que le code qui suit :
frmMessage.Show vbModal
n'est exécuté qu'après la fermeture de frmMessage
Je te propose ceci :
le code de l'ouverture devient :
frmMessage.LabelMessage.Caption = "Test en cours ..."
frmMessage.Show vbModal
Unload frmMessage
et sur la form frmMessage :
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Form_Activate()
Me.Refresh
Call Sleep(10000)
frmMessage.Hide
End Sub
J'ai testé ça semble fonctionner
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_jamey
Messages postés8Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention31 janvier 2003 24 janv. 2003 à 10:06
Merci pour ton aide car j'ai testé dans le cadre de mon application et ça fait bien ce que je voulais que cela fasse.
de plus, le fait d'écrire ''Unload frmMessage'' au niveau de la Command qui affiche cette frmMessage, me permet de faire exécuter autant de fois que je le souhaite cette form frmMessage.
Connaîtrais-tu une astuce pour me permettre de déplacer cette form frmMessage en la sélectionnant avec la souris ?
jmdevz
Messages postés13Date d'inscriptionmardi 14 janvier 2003StatutMembreDernière intervention 5 décembre 2003 24 janv. 2003 à 10:14
Si tu as une barre des titres : en cliquant sur celle-ci et en déplaçant la feuille
si tu n'as pas de barre des titres, il va falloir jouer avec les événements mouse_down, mouse_move et mouse_up