FENÊTRE D'ATTENTE AVEC BARRE DE PROGRESSION

astouz2000k Messages postés 50 Date d'inscription samedi 2 juillet 2005 Statut Membre Dernière intervention 2 mai 2013 - 13 sept. 2009 à 20:39
 Mrhack38 - 3 janv. 2013 à 13:30
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50555-fenetre-d-attente-avec-barre-de-progression

Moi j'ai un peu modifier le code est après quelque bug j'ai réussi ;)

'Instantiation
Dim test As New Form4

'Affichage
Form4.Title = "Patientez"
Form4.Text = ""
Form4.Show()

'Traitement lourd et bloquant
Threading.Thread.Sleep(4000)

'Fermeture
Form4.Close()
End Sub
cs_Domi68 Messages postés 1 Date d'inscription samedi 10 juillet 2010 Statut Membre Dernière intervention 29 décembre 2010
29 déc. 2010 à 10:07
Bonjour,
Merci pour ton travail.
J'ai inclus ton code à un de mes projets en cous sous VB 2010. J'ai effectué la modification indiquée ci-dessus. Tout fonctionne hormis l'instruction close qui reste sans effet même après l'arrêt du programme. Une solution ?
tovin Messages postés 164 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 14 août 2013 3
3 déc. 2009 à 13:22
Bonjour,
Tiens, j'ai oublié de donner la note.
tovin Messages postés 164 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 14 août 2013 3
1 déc. 2009 à 18:41
Lourd ? Et même lourdeau !...
patmtp35 Messages postés 12 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 2 décembre 2009
1 déc. 2009 à 18:30
tovin tu es lourd...
tovin Messages postés 164 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 14 août 2013 3
1 déc. 2009 à 18:07
Bonjour,
A l'attention de PATMTP35, je reproduis (avec les fautes d'orthographe) ton message du 29 :
"le code de casy marche tres bien on a juste pas la meme vision qd on est le développeur ou celui qui profite du code deja ecrit pour ma part cela fonction bien a part que je n'ai aucune progression sur la barre mais ca doit pas etre grd chose ".
D'après ce que je vois, tu aurais mieux fait de profiter du code que d'être développeur.
A+
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
1 déc. 2009 à 14:15
C'est plutot étrange. Je ne comprend plus. J'ai aussi essayer sur plusieurs postes, j'arrive pas à reproduire ton problème
patmtp35 Messages postés 12 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 2 décembre 2009
1 déc. 2009 à 14:12
je viens de tester ds un projet vide a mon taf avec visual studio 2008 toujours pareils snif
patmtp35 Messages postés 12 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 2 décembre 2009
29 nov. 2009 à 21:53
c'est activé bas je vais voir si je chope un sample de progress bar simple voir si il fonctione
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
29 nov. 2009 à 21:42
Il faut, je crois, que les styles visuels XP soient activés dans les propriétés du projet pour que le style Marquee marche.
patmtp35 Messages postés 12 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 2 décembre 2009
29 nov. 2009 à 20:55
arf coup dur je viens de le coller ds un projet vide avec un formulaire simple et ce code

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim pt As New Patientez
pt.Title = "Titre de la fenêtre"
pt.Text = "Message d'attente"
pt.Show()
System.Threading.Thread.CurrentThread.Sleep(15000)
pt.Close()
End Sub
cela affiche bien la progress barre mais rien n'avance apres elle disparait et le processu est finit...
patmtp35 Messages postés 12 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 2 décembre 2009
29 nov. 2009 à 19:35
bizare doit y avoir autre chose ailleur j'ai essayer avec notepad mais trop rapide et j'ai essayer avec
System.Threading.Thread.CurrentThread.Sleep(15000) marche pas et en suprimant le windows style pareil pas de progression
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
29 nov. 2009 à 14:47
Avec ton code et en remplaçant ton processus par notepad, je ne reproduit pas ton problème :(
patmtp35 Messages postés 12 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 2 décembre 2009
29 nov. 2009 à 13:35
je n'ai rien toucher a ton code a se niveau la :

Public Sub Show()
' Affichage de l'écran d'attente
EcAttente = New FormPatientez
EcAttente.Titre = _Title
EcAttente.Message = _Text

'Style fixé à Marquee, mais peu être paramétrable en créant les propriétés qui vont bien
'pour initialiser les différents paramètres
EcAttente.Style = ProgressBarStyle.Marquee

If (Not _Thread Is Nothing) Then
_Thread.Abort()
_Thread = Nothing
End If
_Thread = New System.Threading.Thread(AddressOf EcAttente.affiche)
_Thread.Start()
End Sub
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
29 nov. 2009 à 13:24
As-tu mis la propriété Style de la progressbar sur Marquee pour qu'elle bouge toute seule comme une grande ?
patmtp35 Messages postés 12 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 2 décembre 2009
29 nov. 2009 à 12:23
c'est exactement ce que j'ai fait et cela marche
par contre la progress bar ne bouge pas voici ma structure dit moi ce que tu en pensse :
Private Sub Start_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Start.Click
'Instantiation
Dim Wait As New Patientez
'Affichage
Wait.Title = "XtreamJ"
Wait.Text = "Processing........"
Wait.Show()
Dim OP As New ProcessStartInfo("xtreamj.exe")
OP.WindowStyle = ProcessWindowStyle.Hidden
Dim P As Process = Process.Start(OP)
P.WaitForExit()
Wait.Close()
End Sub
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
29 nov. 2009 à 12:04
Le code donné est effectivement développé avec VB2008 (VB2005 au départ mais il a été converti par la suite) et il se peut que la structure des fichiers xxxx.designer.vb soit différente entre les 2 versions.
(Je n'ai plus VB2005 pour vérifier)

Hormis ce que j'expliquais plus haut sur le problème de l'icone, et qui est un raté de ma part, le code n'est pas non plus d'une complexité absolue.
Il peut, si besoin, être recréé sous VB2005. Dans un nouveau projet, il suffit de faire un nouvel écran vierge du même nom et caractéristique que celui-ci, d'y mettre un label et une progressbar nommé comme dans celui-ci, et de recopier le code qui se trouve dans patientez.vb.
patmtp35 Messages postés 12 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 2 décembre 2009
29 nov. 2009 à 11:30
le code de casy marche tres bien on a juste pas la meme vision qd on est le développeur ou celui qui profite du code deja ecrit pour ma part cela fonction bien a part que je n'ai aucune progression sur la barre mais ca doit pas etre grd chose
tovin Messages postés 164 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 14 août 2013 3
29 nov. 2009 à 11:09
Rebonjour,
Ma question n'était peut-être pas si idiote que tu peux le supposer : en effet, après avoir testé sous VB 2005, j'ai testé sous VB 2008. Et ça marche sous VB 2008.
Alors, ne serait-il pas nécessaire d'indiquer le programme à utiliser ?
patmtp35 Messages postés 12 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 2 décembre 2009
29 nov. 2009 à 10:48
Merci ! ca a l'air d'etre cela !
tovin Messages postés 164 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 14 août 2013 3
29 nov. 2009 à 10:37
Bonjour,
Non, le fait de supprimer la ligne Me.Icon ne change rien et j'ai toujours le bug signalé plus haut par PATMTP35.
On a toujours un arrière-goût d'insatisfaction quand on n'arrive pas à faire marcher un code: doit-il être attribué à l'ignorance du testeur ou au va-vite de l'offrant ?
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
29 nov. 2009 à 09:51
Oui c'est probablement parce que j'avais été obligé de supprimer le fichier Patientez.resx des fichiers distribués car il contenait une donnée que je ne pouvais pas distribuer (pb de droit). Mais il semblerait qu'il soit rester une référence vers cette données dans les autres fichiers.

Essaye d'ouvrir le fichier Patientez.Designer.vb et regarde si tu trouve la ligne suivante :
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)

Si elle y est, essaye de la supprimer pour voir si ça marche mieux
patmtp35 Messages postés 12 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 2 décembre 2009
28 nov. 2009 à 22:49
hello

tout d'abord merci pour ton code !

j'ai essayer d'inclure ron code dans un pti bou de projet que je suis en train de realiser mais j'obtiens une erreur que j'ai du mal a corriger :
cela plante a cette ligne Private _Fermer As Boolean = False en me disant

Impossible de trouver des ressources appropriées pour la culture spécifiée ou la culture neutre. Assurez-vous que "XJ_GUI.FormPatientez.resources" a été correctement incorporé ou lié dans l'assembly "XJ GUI" au moment de la compilation ou que tous les assemblys satellites requis sont chargeables et complètement signés.

as tu une idee ?
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
20 nov. 2009 à 20:37
C'est un point sur lequel, je crainds malheureusement ne pas savoir répondre !

C'est problablement possible, mais dans la mesure ou justement le but était de supprimer tout lien entre les 2 processus, cela risque d'être un peu complexe.

Il doit falloir, je pense, jouer avec des delegate et des callback, mais c'est un domaine que je ne connais pas assez bien.

Si quelqu'un d'autre à des réponses qu'il les propose
zeg_ Messages postés 2 Date d'inscription vendredi 20 juillet 2007 Statut Membre Dernière intervention 3 mai 2013
20 nov. 2009 à 18:13
Bonjour,

Merci pour ce control qui m'a bien servi. Mais j'aimerais y ajouter un bouton ANNULER pour pouvoir mettre fin au traitement lourd s'il prenait trop de temps.
Comment m'y prendre?

Merci.
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
16 sept. 2009 à 08:57
bonjour

merci pour la réponse,c'est nickel

bonne journée
petchy
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
15 sept. 2009 à 23:29
je sais bien..., tu as raison de préciser pour les autres lecteurs....
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
15 sept. 2009 à 22:32
Ben, avec le bout de code donné dans ma première réponse le projet démo est quasiment fait :D

Juste une Form, un bouton dessus, on laisse tous les paramètres par défaut, on colle le code de ma première réponse, et on execute ;)
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
15 sept. 2009 à 22:11
... (pour un novice VB.NET comme moi... il a fallut moins de 40 secondes pour avoir un résultat utilisable)

casy, non pas que je pense çà utile mais bon : si tu en as envie (uniquement) joint éventuellement un projet démo :/
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
15 sept. 2009 à 21:20
TU prend les trois fichiers du zip, tu les dézippe dans le dossier de tes sources, et tu rajoute le .vb à ton projet (Ajouter/élément existant)

Ensuite tu t'inspire du code donné pour l'utilisation
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
15 sept. 2009 à 17:11
bonjour
je voudrais bien essayer le code,mais comment s'en servir?
merci
petchy
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
13 sept. 2009 à 22:01
salut,

System.Threading.Thread.CurrentThread.Sleep(15000) => erreur (je dois supprimer 'CurrentThread')

même en plaçant une msgbox (qui bloque donc aussi le thread) ce code semble fonctionner comme prévu. (animation fonctionnelle, refresh ok, aucun freeze)

xp sp3
vs 2008

++
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
13 sept. 2009 à 21:04
Code de test :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Instantiation
Dim test As New Patientez

'Affichage
test.Title = "TestPatientez"
test.Text = "Test de Patientez!"
test.Show()

'Traitement lourd et bloquant
System.Threading.Thread.CurrentThread.Sleep(15000)

'Fermeture
test.Close()
End Sub

Ca marche très bien chez moi !!!
astouz2000k Messages postés 50 Date d'inscription samedi 2 juillet 2005 Statut Membre Dernière intervention 2 mai 2013
13 sept. 2009 à 20:39
bonjour,

merci pour ce code mais cela ne fonctionne pas chez moi.
l'appli es figé y compris ta progressbar, je pensais que le thread solutionnerai le probleme.
si toutefois tu as une idée je suis tout ouie.

merci
Rejoignez-nous