Timer [Résolu]

- - Dernière réponse :  Utilisateur anonyme - 12 juil. 2017 à 15:22
Bonjour , je suis un-peux bloquer à un chapitre d'un cours dans ce cours il y ce code

Public Class Form1
Private Sub TIM_TIM_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TIM_TIM.Tick
Dim Tourne As Boolean = True
Dim Bouton As Integer = 0

'Rassemble tous les boutons radio dans un tableau
Dim RB(9) As RadioButton
RB(0) = Me.RB_1
RB(1) = Me.RB_2
RB(2) = Me.RB_3
RB(3) = Me.RB_4
RB(4) = Me.RB_5
RB(5) = Me.RB_6
RB(6) = Me.RB_7
RB(7) = Me.RB_8
RB(8) = Me.RB_9
RB(9) = Me.RB_10

While Tourne
'Si on est arrivé au bout du tableau, on sort de cette boucle
If Bouton = 10 Then
Tourne = False
Else
'Si le bouton actuellement parcouru est activé
If RB(Bouton).Checked Then
'Et si ce n'est pas le dernier
If RB(Bouton) IsNot RB(9) Then
'on active celui d’après et on sort de la boucle
RB(Bouton + 1).Checked = True
Tourne = False
Else
'Sinon on reprend au premier
Me.RB_1.Checked = True
End If
End If
'On incrémente le compteur
Bouton = Bouton + 1
End If
End While
End Sub


End Class


voici le cours https://openclassrooms.com/courses/apprenez-a-programmer-en-vb-net/les-timers-1

ce que j'arrive pas à comprendre c'est la variable Bouton comment peut-elle garder sa valeur puisque qu'à chaque nouveau passage dans l'événement la variable devient 0 et aussi je comprend pas le boolean Tourne je vois pas à quoi il sert puisque dans tout les cas il devient False

bref je voulais avoir un-peux plus d'éclaircissement sur ce code merci d'avance :)
Afficher la suite 

Votre réponse

4 réponses

Messages postés
12396
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
0
Merci
Bonjour

Est-ce que tu as exécuté ce code en pas à pas?
Je ne pense pas, car si tu l'avais fait tu ne devrais pas avoir l'analyse que tu as.

Utilisateur anonyme -
oui j'ai exécuter le code pas à pas et quand ça sort de la boucle l'événement recommence la variable Bouton n'atteint jamais 9 , en tout cas pour moi
Commenter la réponse de Whismeril
Messages postés
3244
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
13 décembre 2018
0
Merci
Salut

la variable Bouton n'atteint jamais 9

explique pourquoi ? ou comment on sort de la boucle ?
Utilisateur anonyme > Whismeril
Messages postés
12396
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
-
http://www.zimagez.com/zimage/test1212.php

la voici

Le "IsNot" de
If RB(Bouton) IsNot RB(9) Then


veut bien dire "n'est pas" ?
Whismeril
Messages postés
12396
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
> Utilisateur anonyme -
variables ça fais &H0

va est un short, et manifestement VS te l'affiche en hexadécimal.

Le "IsNot" de
If RB(Bouton) IsNot RB(9) Then
veut bien dire "n'est pas" ?

oui
Utilisateur anonyme > Whismeril
Messages postés
12396
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
-
sur d'ancien projet les variables s'affiches en décimal et sur les nouveaux ils s'affichent en hexa bizarre , peut-être qu'il y a un paramètre pour régler ça ?
Whismeril
Messages postés
12396
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
> Utilisateur anonyme -
Sans doute, mais je ne sais pas lequel
Utilisateur anonyme > Whismeril
Messages postés
12396
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
-
ok merci
Commenter la réponse de cs_ShayW
Messages postés
12396
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
0
Merci
Sinon, regarde ça
    Dim index As Integer = 0

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Dim RB() As RadioButton = {RadioButton1, RadioButton2, RadioButton3, RadioButton4, RadioButton5, RadioButton6, RadioButton7, RadioButton8, RadioButton9, RadioButton10}
        RB(index).Checked = True
        index += 1
        If index = 10 Then
            index = 0
        End If
    End Sub


Un peu plus simple non?
comment tu fais pour que la variable index soit utilisable dans l'événement ?
dans le cours ils disent aussi qu'on aurai pu déclarer au Load ce que j'ai essayé bien avant de voir qu'il le dit mais perso je peux pas
Commenter la réponse de Whismeril
Messages postés
12396
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
0
Merci
Il y a 2 choses à comprendre
  • la portée d'une variable
  • la différence entre déclaration et initialisation.

La portée

c'est la "zone" du code ou cette variable est vue.
Typiquement, dans un même fichier, la porté est bornée par un block
trucmuche


end trucmuche

Déclaration et initialisation

La déclaration est "la naissance" de la variable, une fois qu'elle est déclarée, elle existe, mais elle n'est pas utilisable.
Pour être utilisable, il faut lui donner une valeur de départ, c'est l'initialisation.




Dans, une méthode, une boucle, un bloc quelconque, les instructions sont exécutées dans l'ordre ou elles sont écrites, la variable "nait" donc, à sa déclaration, est utile à partir de son initialisation et "meure" à la fin de sa portée.

Dans une classe (un Form, c'est un type de classe), il n'y a pas d'ordre particulier entre les différentes méthode, une variable dont la portée s'étend à toute la classe peut être déclarée n'importe ou au niveau de la classe

Si j'écris
class Toto

    Dim index as Integer

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick


    End Sub

    Dim valeur as Double
end class
index et valeur seront toutes deux vues dans la méthode Timer1_Tick.

Cependant, si elle n'ont pas de valeur au moment ou tu veux les utiliser, ça va coincer. Et initialiser une variable dans un timer, revient à lui donner la même valeur tout le temps, c'est plus vraiment une variable.
On pourrait s'en démerder avec un if, mais c'est ce compliquer la vie pour rien.

Les 2 options, les plus simples sont soit d'initialiser directement la variable, comme je te m'ai montré, soit de les initialiser dans le Load ou le New qui seront effectivement exécutés avant le Tick du timer


class Toto
    Public sub New()
       index = 1'initialisation de la variable déclarée plus bas
    end sub

    Dim index as Integer

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick


    End Sub

    Dim valeur as Double = 1.2'déclaration et intialisation
end class

Quand Timer1_Tick sera exécutée pour la première fois index vaudra 1 et valeur 1.2




Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Utilisateur anonyme > Whismeril
Messages postés
12396
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
-
ok donc ce fichier sert à avoir le code , les déclaration etc... des contrôles et permet aussi d'afficher les contrôles en mode design ?

mais tu avais dis qu'il y avait deux fichiers ?

Comme je te l'ai déjà dit, ce qui est hors méthode n'a pas d'ordre précis, et comme les contrôles sont interdépendants, si tu ne le sont initialises pas dans le bon ordre (comme pour le tableau) ça merde.

ouais pour savoir ou exécuter le contrôles quoi ?
Whismeril
Messages postés
12396
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
> Utilisateur anonyme -
Oui il y a deux fichiers, le 2eme c'est celui que tu utlises.
Utilisateur anonyme > Whismeril
Messages postés
12396
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
-
donc 1 fichier pour le code des contrôles , des déclaration des contrôles etc... et ce même fichier on l'utilise dans le mode design ?

et le deuxième c'est le code avec les événement etc ... ?
Whismeril
Messages postés
12396
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
> Utilisateur anonyme -
Oui c'est ca
Utilisateur anonyme > Whismeril
Messages postés
12396
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
-
ah d'accord ok et que le fichier mode design est masqué ?

je pensé enfaîte qu'il y avait deux fichiers pour le mode design...
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.