PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 28 juil. 2008 à 11:55
salut,
ta sub est peut-être mal faite, si elle plante lors d'une saisie....
si il y a une boucle, possible que ce que tu crois être un plantage est juste le manque de l'instructin "doevents" dans ta boucle
Q : [doc/faq.aspx#vb_doevents Code : Mon application freeze lors d'une
longue opération, comment y rémedier]
sinon si ta sub est dans une form, elle peut commencer par me.enabled=false et finir par =true.
il sera alors impossible tant de saisir au clavier que de fermer l'appli.
dans ce cas je te conseille de le signaler à l'utilisateur (label "en cours de calcul" ou autre)
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
SnapFAB
Messages postés61Date d'inscriptionsamedi 10 novembre 2007StatutMembreDernière intervention 5 mars 2011 28 juil. 2008 à 17:53
Salut PCPT,
En faite ma sub ne plante pas vraiment, mais elle continue à tourner.
Je m'explique, ma sub sert à afficher des miniatures de photos dans une PictureBox par rapport à un chemin donner.
Seulement quand je change de chemin en cours d'affichage à l'aide de la touche bas et que je recharge des nouvelles miniatures, mes nouvelles miniatures s'affichent correctement mais au lieu de s'arrêter à la fin le programme continu à charger les miniatures du premier chemin qui n'était pas arriver à son terme.
J'ai bien placer un DoEvents mais ça ne change rien. Idem pour le me.enabled...
En tous cas merci pour tes conseils.
Erase chemin()
Dim Nrtotal As Integer
Dim NewLargeur As Integer
Dim NewHauteur As Integer
Dim Coeff As Integer
Dim x As Integer
Dim y As Integer
Dim Nr As Integer
Dim fic As String
Dim PicX As Integer
Dim PicY As Integer
PicX = Picture1(0).Left
PicY = Picture1(0).Top
'effacement des images
Picture1(0).Picture = Nothing
If Picture1.UBound > 0 Then
On Error Resume Next
For I = 1 To Picture1.UBound
Unload Picture1(I)
Next I
End If
'liste image pour recuperation dans tableau
Repertoire = List_Photos.Text ' pour trouver le nom du répertoire
fic = Dir("C:\SNAP GAME\REPERTOIRE PHOTOS" & Repertoire & "/*.jpg", vbNormal)
If fic "" Then Picture1(0).Visible False
Do While fic <> ""
If Picture1(Nr).Top + Picture1(Nr).Height > Picture2.Height Then
Picture2.Height = Picture1(Nr).Top + Picture1(Nr).Height
VScroll1.Max = -Picture2.Height + conteneur.Height
VScroll1.Visible = True
End If
Else
Picture1(Nr).Left = PicX
Picture1(Nr).Top = PicY
End If
End If
'si la taille est plus petite que la picturebox
If TailleReel.Width < Picture1(Nr).Width And TailleReel.Height < Picture1(Nr).Height Then
Coeff = 1
x = (Picture1(Nr).Width - TailleReel.Width) / 2
y = (Picture1(Nr).Height - TailleReel.Height) / 2
GoTo Affiche_Image
End If
'definition du coefficient selon l'orientation de l'image
If TailleReel.ScaleWidth > TailleReel.Height Then
Coeff = TailleReel.Width / Picture1(Nr).Width
x = 0
y = (Picture1(Nr).Height - (TailleReel.Height / Coeff)) / 2
Else
Coeff = TailleReel.Height / Picture1(Nr).Height
x = (Picture1(Nr).Width - (TailleReel.Width / Coeff)) / 2
y = 0
End If
Affiche_Image:
NewLargeur = TailleReel.Width / Coeff
NewHauteur = TailleReel.Height / Coeff
Picture1(Nr).PaintPicture TailleReel.Picture, x, y, NewLargeur, NewHauteur
Picture1(Nr).Visible = True
DoEvents
Nr = Nr + 1
On Error Resume Next
fic = Dir()
Loop
Label1 = Nrtotal & " Image(s)"
Pb.Visible = False
Label2 = "DIAPORAMA"
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 28 juil. 2008 à 20:07
une variable booléenne hors de la sub
plusieurs tests dans le sub, à différents endroits, genre si variable quitter = vrai alors quitter=false: exit sub
et quitter qui reçoit vrai lors de ton click ....
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp