Accueil > > > HORLOGE BINAIRE
HORLOGE BINAIRE
Information sur la source
Description
Une petite horloge binaire pas si facile à lire que ça mais qui se distingue par un code source particulièrement compact.
Source
- 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
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
Conclusion
En jouant avec les contrôles indexés, les puissances de 2 et l'opération binaire AND, une seule boucle FOR...TO...NEXT suffit à faire fonctionner cette horloge.
Je pense sincèrement qu'on ne peut pas faire plus court !
Tous les détails sont expliqués dans le code en commentaires.
Historique
- 02 avril 2009 13:15:59 :
- - Affichage instantané de l'heure au démarrage
- Suppression des tests "> 0" inutiles
- Centrage écran de la fenêtre
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
drag and drop [ par TeXmeX34 ]
Bonjour,je cherche à activer la gestion du drag and drop sous .net. En effet, depuis que la propriété DragMode n'est plus disponible po
combobox [ par bigbossnino ]
bonjourj ai 2 combobox qui sont en relation ca veut dire que le deuxieme est rempli a partir du premiermon probleme c'est que a chaque fois que je sel
Pour les pro du winsock [ par bobo91 ]
Bonjour, J'aimerais savoir comment faire pour recuperer la valeur bytessent d'un winsock indexé merci à ceux qui pourront repondre. Private Sub Wins
aller à la ligne dans un fichier texte [ par snake57 ]
Bonjour,Ben voila je voudrais pouvoir écrire trois ligne dans un fichier texte. Le problème est que mon code ne marche pas. Pouvez vous m'ai
Reconnaissance caractère [ par observatoire ]
Bonjour,Je réalise une interface utilisateur sur VBA Access, je souhaite reconnaître dans une textebox après avoir lu le texte, un cara
pb de script [ par Miss1 ]
salut j'ai reussi a mettre se code pour vérifier si dans l'index ya vé bien le nom des image mais la je veux faire l'inverse et yarrive pas. je veux v
VB6 DirListBox [ par JeffC1977 ]
Salut.....J'aimerais savoir comment on peut coder pour faire une condition quand, dans un répertoire, j'ai aucun fichier et de demander à mon DirListB
probleme d'update visual basic - MS access [ par xdiethank ]
Bonjours à tous, je programme en ce moment un logiciel de gestion de cave à vin. Mais je bloque là. Voici le code qui me pose probleme. Set req_ent =
réutiliser un label suivant son nom [ par datesta ]
bonjour, pour mon programme je crée à la volé des labels je leur donne des noms le probleme ce qu' apres je voudrais les réutiliser v
Structure d'un fichier binaire? [ par pinje ]
Bonjour a tous,J'aimerais lire un fichier binaire contenant les resultats d'un calcul, or je ne connais pas a l'avance sa structure... Est ce qu'il es
|
Derniers Blogs
ASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHEASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHE par fathi
Tout le monde est unanime pour dire que la programmation multi-thread et asynchrone est en train de devenir un sujet incontournable. Beaucoup de choses sont arrivées avec le framework 4 pour le code parallèle (TPL, PLinq,.) et bientôt, on va avoir l...
Cliquez pour lire la suite de l'article par fathi PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS !PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS ! par Etienne Margraff
J'ai récemment eu un problème pour obtenir l'intelliTrace sur un site web dans IIS. Il n'y avait pas de message d'erreur, rien dans le journal d'évènement Windows, et après 3 appels à une voyante, 2 visites chez un marabou, j'ai failli me résign...
Cliquez pour lire la suite de l'article par Etienne Margraff OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en œuvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|