Accueil > Forum > > > > Mise à jour progressbar
Mise à jour progressbar
dimanche 5 octobre 2008 à 11:02:20 |
Mise à jour progressbar

SeKo54
|
Bonjour, Je m'amuse actuellement à programmer un logiciel qui permet d'apprendre du vocabulaire. Pour cela mon application pioche un mot dans une base de donnée, attend une traduction et vérifie si le mot entré est juste. A chaque fois que l'utilisateur répond juste pour la traduction du mot une progressbar s'incrémente. ex : Interrogation ==> mise a jour de la progress bar en fonction du nombre précédent de réponses justes ==> réponse utilisateur juste ou fausse ==> incrémentation ou non de la progress bar ==> interrogation autre mot ..... Mon problème vient du fait que le code pour incrémenter la progressbar s'exécute (pas de plantage et je constate que la valeur à incrémenter à bien été augmentée) mais la progress bar ne se met pas a jour une fois le mot saisi et validé. Je ne constate qu'elle est a jour seuleument lorsque le mot m'es soumis une seconde fois ... J'utilise la fonction suivante pour mettre a jour : pgrb_mot.Value = nouvelle_valeur Peut-être y a t-il moyen de forcer l'affichage de cette barre ... Si quelqu'un pouvait m'aider ? :) (Je programme sous VB 2008)
|
|
dimanche 5 octobre 2008 à 12:02:24 |
Re : Mise à jour progressbar

jmfmarques
|
Bonjour,
c'est le code de ta validation (toute la procédure) qu'il nous faut voir ! Juste une idée (avec boule de crystal) : ordre chronologique : 1) apréciation de la validité de la réponse 2) mise à jour de ta variable nouvelle-valeur 3) mise à jour de la valeur de ta progressbar
(tout me donne à penser qu'au lieu de faire 1) puis 2) puis 3), tu fais 1), puis 3) puis 2) ===>> alors évidemment ...!!!
Un commentaire : je ne comprends pas l'utilité d'une variable nouvelle_valeur dont la valeur serait (double emploi, donc) celle déjà contenue dans la progressbar ...
|
|
dimanche 5 octobre 2008 à 13:00:47 |
Re : Mise à jour progressbar

SeKo54
|
Bonjour, voici le code qui est utilisé :
'Tout démarre avec l'appui sur la touche entrée d'un TextBox
'Quelques définitions:
'@theme est un type sujet 'Structure sujet ' Dim titre As String ' Dim nbmots As Integer ' Dim progresssujet As Integer ' Dim listemot() As mot ' Dim nummot As Integer ' Dim termine As Integer Nombre qui une fois a nbmots indique que 'End Structure
'Structure mot ' Dim nom1 As String ' Dim nom2 As String ' Dim com As String ' Dim nbjuste As Integer ' Dim nbfaux As Integer ' Dim progressmot As Integer ' Dim appri As Boolean 'End Structure
'@pgrb est la progressbar utilisée
'la fonction corrige renvoie seuleument un booleen vrai ou faux en 'fonction de la véracité du mot saisi. 'la fonction interro renvoir simplement un nouveau numéro d'index qui correspondra au nouveau mot demandé
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown If e.KeyCode = 13 Then 'code ascii correspondant a la touche entrée
If corrige(TextBox1) = True Then 'REPONSE JUSTE
'Mise a jour des paramètres du tableau en mémoire theme.listemot(theme.nummot).nbjuste = theme.listemot(theme.nummot).nbjuste + 1 theme.listemot(theme.nummot).progressmot = theme.listemot(theme.nummot).progressmot + 1
'Mise a jour des paramètres de l'interface (QUI NE SE FAIT PAS) pgrb_mot.Value = theme.listemot(theme.nummot).progressmot lbl_correction.Text = ""
Else'REPONSE FAUSSE 'Mise a jour des paramètres du tableau en mémoire theme.listemot(theme.nummot).nbfaux = theme.listemot(theme.nummot).nbfaux + 1 theme.listemot(theme.nummot).progressmot = 0
'Mise a jour des paramètres de l'interface (QUI NE SE FAIT PAS) pgrb_mot.Maximum = 5 pgrb_mot.Value = theme.listemot(theme.nummot).progressmot
lbl_correction.Text = theme.listemot(theme.nummot).nom2
GoTo motfaux
End If
TextBox1.Text = "" ToolStripProgressBar1.Value = theme.termine
Call Sleep(700) '**********************************************************************
'Redefinition du nouveau mot a apprendre Call Interro()
'Choix de la larguer de la progress bar et de l'avancement (ICI LA MISE A JOUR FONCTIONNE) If theme.listemot(theme.nummot).nbfaux = 0 Then pgrb_mot.Maximum = 3 Else pgrb_mot.Maximum = 5 End If
pgrb_mot.Value = theme.listemot(theme.nummot).progressmot
lbl_interro.Text = theme.listemot(theme.nummot).nom1
End If
motfaux:
End Sub
|
|
dimanche 5 octobre 2008 à 13:03:40 |
Re : Mise à jour progressbar

SeKo54
|
J'avais également intercalé un sleep comme vous pouvez le voir, cela pour être sûr que la progresse bar ne se rafraichissait pas trop rapidement avec la valeur du prochain mot... Mais apparement cela ne marche pas.
En tout cas merci
|
|
dimanche 5 octobre 2008 à 17:34:43 |
Re : Mise à jour progressbar

Kevin.Ory
|
Salut, Ca me semble un peu compliqué ton utilisation des structures.... L'incrémentation du nombre de réponses correctes doit se faire dans la structure sujet, pas mot. Ici tu incrémente une variable dans mot, alors que cette structure mot n'est plus utilisé pour le prochain mot (et donc vaut 0 pour le prochain mot)
|
|
dimanche 5 octobre 2008 à 20:51:04 |
Re : Mise à jour progressbar

SeKo54
|
Désolé, je comprend pas bien ce que tu me dis...
En ce qui concerne la structure mot, je l'incrémente après chaque réponse de l'utilisateur. Une fois que l'incrémentation atteint une valeur que j'ai préalablement décidé (l'utilisateur a donc répondu juste un certain nombre de fois), je considère que l'utilisateur connait ce mot. Enfin je ne pense pas avoir de problème avec ma structure car elle semble fonctionner.
J'ai juste un problème avec ma progress bar qui malgré le fait de prendre la bonne valeur (pgrb.Value a bien changé entre une question et une autre) n'augmente pas sa barre juste après la saisie de l'utilisateur comme je le voudrai.
Si jamais je passe à coté d'un truc n'hésite pas à me corriger. Merci
|
|
lundi 6 octobre 2008 à 02:36:10 |
Re : Mise à jour progressbar

Kevin.Ory
|
Ouais désolé, il est vrai que ce n'est pas très compréhensible ce que j'ai dis avant  Mais j'avais pas vraiment compris le problème... et mtn je ne comprend pas pourquoi ça ne fonctionne pas.... Theme.ListeMot(Theme.NumMot).ProgressMot = 0 pgrb_Mot.Value = Theme.ListeMot(Theme.NumMot).ProgressMotClair que si tu exécute ces 2 lignes de code que que la valeur de prgb_Mot ne vaut pas 0, il y a un problème. Qu'en est-il de la valeur dans Theme.ListeMot(Theme.NumMot).ProgressMot, vaut-elle bien 0?
|
|
lundi 6 octobre 2008 à 09:14:26 |
Re : Mise à jour progressbar

SeKo54
|
Bonjour,
Ce bout de code que tu me donnes et ce qui se passe au cas ou l'utilisateur répond faux. Dans ce cas, en exécutant la méthode pas à pas je vois qu'en sortant de TextBox1_KeyDown la pgrb est revenu à 0. Donc oui la valeur de la progress bar passe bien a 0.
En voyant ça j'avais supposé que je ne voyais pas la progress bar s'incrémenter lorsque je répondais juste car vb allait trop vite et m'avais déjà affiché la progress bar correspondant au prochain mot qui sera soumis à l'utilisateur. C'est pour cela que j'ai insérer un Sleep afin de pouvoir voir l'augmentation de la progress bar, mais ca ne semble pasmarcher ...
|
|
mardi 7 octobre 2008 à 03:18:06 |
Re : Mise à jour progressbar

Kevin.Ory
|
Réponse acceptée !
Ok, donc si je comprend bien, tout fonctionne comme ça devrait  Pour la tempo, utilise un timer: Lorsque l'utilisateur valide le mot qu'il a entré, tu affiche le résultat (vrai/faux, ProgressBar) et tu lance le timer (par exemple 5 secondes) Lors du Timer_Tick, tu désactive le timer, tu sélectionne le nouveau mot à traduire et tu met l'affichage à jour. Un Sleep ne fonctionne pas car cela arrête ton thread, et donc la mise à jour de l'affichage ne se fait plus. A la limite une boucle avec un DoEvents et un Sleep pourrait aller, mais c'est franchement pas élégant. Ca donne ceci: Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown If e.KeyCode = Keys.Enter Then
If Corrige(TextBox1) Then ' Correct ListeMot(NumMot).NbJuste += 1 ListeMot(NumMot).ProgressMot += 1
pgrb_mot.Value = ListeMot(NumMot).ProgressMot lbl_correction.Text = ""
Timer1.Start() Else ' Faux ListeMot(NumMot).NbFaux += 1 ListeMot(NumMot).ProgressMot += 1
pgrb_mot.Maximum = 5 pgrb_mot.Value = ListeMot(NumMot).ProgressMot lbl_correction.Text = ListeMot(NumMot).nom2
End If
End If End Sub
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Timer1.Stop() TextBox1.Text = ""
Call Interro() If ListeMot(NumMot).NbFaux = 0 Then pgrb_mot.Maximum = 3 Else pgrb_mot.Maximum = 5 End If
pgrb_mot.Value = ListeMot(NumMot).ProgressMot lbl_interro.Text = ListeMot(NumMot).nom1
End Sub
|
|
mardi 7 octobre 2008 à 19:46:54 |
Re : Mise à jour progressbar

SeKo54
|
Héhé, OK ça m'a généré pas mal d'erreurs, et maintenant mon programme plante mais c'est normal j'ai insérer ton bout de code comme un barbare  (en plus mon code est un peu plus complexe que ce que j'ai posté ...) Mais bon le principal : ca fonctionne, je vois bien la barre s'incrémenter. Merci à toi, je connaissais pas l'objet timer. Par contre tu peux m'expliquer un peu plus la différence entre le timer et la fonction sleep ? Je suppose que "arreter ton thread" signifie bloquer tout le programme en cours (y compris l'affichage) mais bon l'appel à sleep étant placé avant le nouvel appel à "Interro" je pensais que la mise à jour de l'interface aurait été faite avant ... 
|
|
Cette discussion est classée dans : progress, mot, jour, progressbar, juste
Répondre à ce message
Sujets en rapport avec ce message
progress bar [ par energizer956956 ]
bonjour,alors voila j'ai créé un UserForm avec une ProgressBar et maintenant je vouvrais que le userform se lance et que la progressbar s'incrémente a
PB Progress Bar + Texte [ par ragnagnac ]
J'ai un petit soucis et je vous le soumets donc Voilà, j'ai un formulaire qui s'ouvre et se ferme automatiquement via un Timer.Sur ce formulaire, il y
Couleur ProgressBar [ par djgab21 ]
Bonjour a tousDésolé si cette question a déja été résoluemais j'ai un petit problème pour la couleur des progress bar dans Microsoft Visual Basic 2005
Progressbar & DoEvents [ par Isabella ]
Voila j'ai fait ceci : j'ai plusieurs exécution j'ai donc fait : sub chose() call progress call execut1 call execut2 end sub Sub progress() Dim compte
Juste un mot [ par Shimiar ]
Juste un mot pour dire qu'il ne faut absolument pas fermer vbfrance car c'est ce qui aide, je suis sûr, bien des programmeurs. Pour ma part, c'est ce
Juste un p'tit mot... [ par JEROMAX ]
... d'avertissement à tous ceux qui vont se lancer dans THE CONCOURS:Pour éviter ce qui s'est passé la derniere fois (ouaih l'autre il m'a piqué mon s
Nouveau bug Access ???? [ par dany108 ]
Quand je crée une requête ajout, sous Access 2000, pour tranférer des données d'une table de la base courante dans une autre base tout se passe bien s
Progressbar et copie [ par pablo79 ]
J'ai fait un programme qui facilite l'installation des Boot Screens sous Windows XP et quand il installe un boot screen je voudrais bien qu'à mesure q
Au secours, ça urge !!!!!!! [ par dany108 ]
Quand je crée une requête ajout, sous Access 2000, pour tranférer des données d'une table de la base courante dans une autre base tout se passe bien s
Au secours, ça urge !!!!!!!!!!! [ par dany108 ]
Quand je crée une requête ajout, sous Access 2000, pour tranférer des données d'une table de la base courante dans une autre base tout se passe bien s
Livres en rapport
|
Derniers Blogs
[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE par Audrey
Dans un de mes articles précédents , j'avais parlé des DomainDataSource avec RIA Services dans le cas d'une interface Maître - Détail. Dans le même principe, je vais parler d'une autre manière de mettre en forme ce cas d'interface avec RIA Services. Et po...
Cliquez pour lire la suite de l'article par Audrey ZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATIONZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATION par ROMELARD Fabrice
Une des nouveautés de la version V 3.0 était l'apparition de l'onglet Social qui ne fonctionnait que si le MarketPlace était activé sur son poste. Cela limitait donc son intérêt, car hors du cadre commercial USA-CANADA, peu de monde trouva...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PRATIQUE DE SILVERLIGHT PAR ERIC AMBROSIPRATIQUE DE SILVERLIGHT PAR ERIC AMBROSI par MPOWARE
Je viens de finir la lecture du dernier livre d'
Eric Ambrosi
éditions PEARSON
Son livre donne une approche pratique de Silverlight qui sera aussi bien comprise par le développeur que par le designeur.
Tous les aspects du développement RIA sont abor...
Cliquez pour lire la suite de l'article par MPOWARE APPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NETAPPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NET par odewit
2 déclinaisons de Silverlight et 2 déclinaisons de Mono permettent dorénavant (ou permettront prochainement) de développer des applications .NET mobiles pour les principales plates-formes du marché :
Silverlight pour Symbian, basé sur Silverlight 2...
Cliquez pour lire la suite de l'article par odewit ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2 par ROMELARD Fabrice
Avec la dernière génération du lecteur MP3 de Microsoft, le ZUNE HD, Microsoft a publié une nouvelle version du logiciel pour PC. Ainsi, je me suis décidé à installer celle-ci sur mon Tablet PC ACER, comme toujours le logiciel est donc tél...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|