Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Ar-S
Messages : 9539 Inscription : dim. 09/oct./2005 16:51
Contact :
Message
par Ar-S » mar. 08/juil./2008 9:35
Salut,
je voudrais faire clignoter un texte 3 fois pour indiquer que l'utilisateur a la dernière version de mon logiciel. j'utilise un simple For/Next mais rien ne se passe, la fenêtre freeze j'usquà la fin du "delay"
#AFFICHE est un StringGadget
Pourquoi cette simple boucle ne fonctionne pas ?
Code : Tout sélectionner
For i=1 To 3
SetGadgetText(#AFFICHE,"")
Delay(1000)
SetGadgetText(#AFFICHE,"Vous avez déjà la dernière version")
Delay(1000)
Next i
EndIf
Dernière modification par
Ar-S le mer. 09/juil./2008 8:42, modifié 1 fois.
wolfjeremy
Messages : 1202 Inscription : sam. 31/déc./2005 23:52
Message
par wolfjeremy » mar. 08/juil./2008 9:37
Ben si ta mis ça dans ton programme sans utiliser de thread c'est normal que ça freeze... vu que tu met ton programme complet en pause avec les delay
Donc il faut que tu utilise un thread pour ta boucle for/next
Ar-S
Messages : 9539 Inscription : dim. 09/oct./2005 16:51
Contact :
Message
par Ar-S » mar. 08/juil./2008 9:50
Ah les thread ! c'est vraiment quelque chose qui me fout dans l'impasse.
Si je passe en procédure mon code :
Code : Tout sélectionner
Procedure Clignote(parametre$)
For i=1 To 3
SetGadgetText(#AFFICHE,"")
Delay(1000)
SetGadgetText(#AFFICHE,parametre$)
Delay(1000)
Next i
EndProcedure
Comment dois-l'appeler en thread après ??
Si je mets :
(le 153 est tiré de l'exemple de la doc mais à quoi sert-il...)
Mon prog se ferme casi illico !
Progi1984
Messages : 2659 Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :
Message
par Progi1984 » mar. 08/juil./2008 10:01
Le paramètre pour un thread ne peut être qu'une variable de type long.
Ta procédure:
Code : Tout sélectionner
Procedure Clignote(param.l)
For i=1 To 3
SetGadgetText(#AFFICHE,"")
Delay(1000)
SetGadgetText(#AFFICHE, peeks(param))
Delay(1000)
Next i
EndProcedure
Et le code
Ca devrait etre fonctionnel.
Ar-S
Messages : 9539 Inscription : dim. 09/oct./2005 16:51
Contact :
Message
par Ar-S » mar. 08/juil./2008 10:03
Je teste ça de suite et je file au boulot.
Merci de votre aide.
Je vous confirme que ça marche d'ici ce soir.
----edit-----
ça marche au poil !!
je vais pouvoir me faire vraiment plaisir grace à ça.
Merci encore
Dernière modification par
Ar-S le mar. 08/juil./2008 10:06, modifié 1 fois.
Octavius
Messages : 312 Inscription : jeu. 26/juil./2007 12:10
Message
par Octavius » mar. 08/juil./2008 11:26
La commande UpdateWindow_(WindowID(#MaFenetre)) permet de forcer la mise à jour de la fenêtre, tu aurais pu l'utiliser avant chaque Delay(1000) et ça aurait fait clignoter ton texte sans avoir recours aux threads, mais ça aurait quand même geler le reste du programme en attendant que ta boucle soit finit (je parle évidemment de ton code initial sur le premier post).
Ar-S
Messages : 9539 Inscription : dim. 09/oct./2005 16:51
Contact :
Message
par Ar-S » mer. 09/juil./2008 8:42
Merci pour l'info Octavius, mais j'ai vraiment souvent été bloqué avec les Threads, ça me permet donc d'un peu mieux piger leurs fonctionnement.