Soyez le premier à donner votre avis sur cette source.
Vue 5 755 fois - Téléchargée 621 fois
Private Sub Command1_Click() 'Afficher ou masquer le poids des bits et l'heure décimale. 'Les 9 contrôles "Label" forment un groupe et sont indexés de 1 à 9. 'Fonctionne comme un switch True-False : propriété Visible = Not (propriété Visible) Dim i As Integer For i = 1 To 9 txtTime(i).Visible = Not (txtTime(i).Visible) Next i End Sub Private Sub Form_Load() 'Définit l'intervalle du contrôle Timer pour afficher l'heure au démarrage (= 1/1000ème seconde) Timer1.Interval = 1 'Définit l'intervalle du contrôle Timer une fois l'horloge lancée (= 1 seconde) Timer1.Interval = 1000 End Sub Private Sub Timer1_Timer() Dim i As Integer 'On renseigne les 3 labels qui affichent l'heure décimale. txtTime(1).Caption = Hour(Now) txtTime(2).Caption = Minute(Now) txtTime(3).Caption = Second(Now) 'Sur le formulaire chaque "bit" de l'affichage est constitué de 2 contrôles Image 'superposés : 1 sphère blanche sous 1 sphère rouge. 'En jouant avec la propriété Visible de la sphère rouge, on fait apparaître 'la sphère désirée. Les sphères blanches sont fixes et ne sont jamais sollicitées. 'Il y a 3 groupes de contrôles pour les sphères rouges : btS, btM et btH pour 'les secondes, minutes et heures. 'btS, btM et btH sont indexés de 0 à 5 afin de pouvoir arriver pour les secondes 'et les minutes à la valeur 59 : 00111011 'et pour les heures à la valeur 23 : 00010111 'NB : btH(5) est un contrôle Image vide ! Nécessaire pour la boucle de 0 à 5. 'On se sert des index de ces contrôles pour s'adresser à chaque sphère rouge à 'l'aide d'une boucle For...To...Next. 'Et on effectue une opération binaire AND entre les secondes (par exemple) et 2 à 'la puissance de l'index. Ceci indique si le bit représenté par l'index est à 1 ou à 0. 'Exemple, nous en sommes à 27 secondes et nous cherchons quelles sphères rouges 'il faut afficher. Du contrôle btS(0) au contrôle btS(5) on fait : ' bit 0 = 27 AND 2^0 = 00011011 AND 00000001 = 00000001 > 0 donc Visible = True ' bit 1 = 27 AND 2^1 = 00011011 AND 00000010 = 00000010 > 0 donc Visible = True ' bit 2 = 27 AND 2^2 = 00011011 AND 00000100 = 00000000 = 0 donc Visible = False ' bit 3 = 27 AND 2^3 = 00011011 AND 00001000 = 00001000 > 0 donc Visible = True ' bit 4 = 27 AND 2^4 = 00011011 AND 00010000 = 00010000 > 0 donc Visible = True ' bit 5 = 27 AND 2^5 = 00011011 AND 00100000 = 00000000 = 0 donc Visible = False 'C'est ainsi qu'avec la petite boucle ci-dessous on gère l'horloge numérique. For i = 0 To 5 btS(i).Visible = (Second(Now) And 2 ^ i) btM(i).Visible = (Minute(Now) And 2 ^ i) btH(i).Visible = (Hour(Now) And 2 ^ i) Next i End Sub
2 avril 2009 à 13:28
Timer1.Interval = 1000
tu n'as pas lourd de garantie qu'un tick s'effectue.
2 avril 2009 à 13:20
2 avril 2009 à 10:25
2 - au chargement, pas de Tick du Timer la première seconde ; l'heure s'affiche pas de suite. Mets 1 dans l'interval de ton timer et remet le à 1000 dans le Timer1_Timer
3 - le test > 0 est inutile. btH(i).Visible = (Hour(Now) And 2 ^ i)
suffit
2 avril 2009 à 10:14
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.