Faire une Alarme :
Une image montrant les contrôles :
Le Code :
Déclarations :
1
2
3
4
5
6
| ' Gambas class file
PRIVATE $iTemp AS INTEGER '<----------------------------' le décompte en seconde PRIVATE $MonSon AS Sound '<--------------------------------' le son de l'alarme PRIVATE $hilow AS STRING = "hilow" '<---------------------' le nom du son STATIC PUBLIC bSon AS BOOLEAN '<---------------------------' balise booleénne oui ou non
|
Le son de l'alarme :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| PRIVATE SUB son($son AS STRING) '<------------------------' définition du son
SELECT CASE $son CASE $hilow TRY $MonSon = Sound.Load("Sounds/hilow.ogg") END SELECT TRY $MonSon.Play() '<---------------------------------' jeu du son
END
PRIVATE SUB sonAlarm()
WHILE bSon = TRUE '<------------------------------------' tant que bSon son($hilow) '<---------------------------------------' jeu du son WAIT 2 '<------------------------------------------' attente pendant la durée du son WEND
END
|
Le Timer qui décompte le temps :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| PUBLIC SUB timDecomp_Timer() '<-------------------------' évènement de décompte du temps
DIM iHour, iMinute, iSeconde AS INTEGER '<--------------' mes variables locales
IF $itemp > 0 THEN '<---------------------------------' si la variable est définie DEC $iTemp '<--------------------------------------' la variable globale est décrémentée ELSE '<----------------------------------------------' sinon on sort de l'évènement lblWillBe.Text = "" '<-------------------------------' label du temps qu'il sera est vide RETURN '<-------------------------------------------' retour dans la boucle évènements ENDIF
iHour = ($itemp DIV 3600) MOD 3600 '<-------------------' les heures à partir du temps de décompte en secondes iMinute = ($itemp MOD 3600) DIV 60 '<-------------------' les minutes à partir du temps de décompte en secondes ' iMinute = (itemp div 60) Mod 60 '<--------------------' autre possibilité pour les minutes iSeconde = ($itemp MOD 3600) MOD 60 '<-----------------' les secondes à partir du temps de décompte en secondes
lblSecond.Text = CStr(iHour) & " h " & CStr(iMinute) & " m " & CStr(iSeconde) & " s " '<-- affichage repère btnVisible.Visible = TRUE
IF $itemp = 0 THEN '<---------------------------------' nettoyage de fin de décompte ME.Show btnVisible.Visible = FALSE timDecomp.Stop '<-----------------------------------' arrêt de l'évènement décompte TimeBox1.Value = 0 '<-------------------------------' valeur à zéro du TimeBox TimeBox1.Enabled = TRUE '<---------------------------' le TimeBox est à nouveau utilisable lblSecond.Text = "" '<-------------------------------' le label d'affichage du décompte est vide lblTempsRest.Visible = FALSE '<-------------------' le label teps restant est vide lblWillBe.Text = "" '<-------------------------------' le label du temps qu'il sera est vide btValid.Enabled = TRUE '<---------------------------' débloquage du bouton sonAlarm() '<---------------------------------------' jeu du son de l'alarme ENDIF
END
|
Réglage de l'alarme :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| PUBLIC SUB btValid_Click() '<-----------------------------' évènement de validation
IF btValid.Value THEN $iTemp = Hour(TimeBox1.Value) * 3600 + Minute(TimeBox1.Value) * 60 + Second(TimeBox1.Value) '<-- définition du décompte en secondes TimeBox1.Enabled = FALSE '<-----------------------' le timeBox est rendu inopérant lblTempsRest.Visible = TRUE '<-----------------------' affichage du temps restant timDecomp.Start '<-----------------------------------' déclenchement de l'évènement Timer_Timer IF $iTemp <> 0 THEN lblWillBe.Text = Format(DateAdd(Time(Now), gb.Second, $itemp), "hh:nn:ss") '<-- temps qu'il sera
IF btvalid AND TimeBox1.Value = 0 THEN '<------------' si le compteur est toujours à zéro on ne valide pas TimeBox1.Enabled = TRUE btValid.Value = FALSE '<------------------------' bloquage du bouton RETURN ELSE bSon = TRUE '<------------------------------------' son alarme autorisé ' Wait 2 '<-------------------------------------' attente de deux secondes avant de cacher le formulaire ' Me.Hide ENDIF ELSE bSon = FALSE '<------------------------------------' son de l'alarme non autorisé timDecomp.Stop '<-----------------------------------' arrêt de l'évènement Timer_Timer et nettoyage TimeBox1.Value = 0 '<-------------------------------' le timeBox est remis à zéro TimeBox1.Enabled = TRUE '<---------------------------' il est rendu à nouveau opérationnel lblTempsRest.Visible = FALSE '<-------------------' le label temps restant est invisible lblSecond.Text = "" '<-------------------------------' le label de décompte est vidé lblWillBe.Text = "" '<-------------------------------' le label du temps qu'il sera est vidé btnVisible.Visible = FALSE ENDIF
END
|
Autres procédures :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
| PUBLIC SUB timNow_Timer() '<-----------------------------' évènement affichage de l'heure
lblNow.Text = Format(Time(Now), "hh:nn:ss") '<----------' affichage de l'heure actuelle
END
PUBLIC SUB Form_Open() '<---------------------------------' évènement ouverture du formulaire
timNow.Trigger '<------------------------------------' déclenchement de l'évènement Timer_Timer
ME.X = FMain.X - ME.w * (11 / 10) ME.Y = FMain.y + ME.H / 2
btnVisible.Visible = FALSE btValid.Tooltip = ("Patienter deux secondes") & "\n" & ("après le déclenchement" TimeBox1.Tooltip = ("Saisissez le délai de temps puis" & "\n" & ("actionner l'interrupteur sur ON") & "\n\n" & ("pour éteindre l'alarme") & "\n" & ("actionner l'interrupteur sur OFF")
END
PUBLIC SUB btnQuit_Click()
bSon = FALSE '<----------------------------------------' pour stopper le son au cas où timDecomp.Enabled = FALSE timNow.Enabled = FALSE timDecomp = NULL timNow = NULL TimeBox1.Delete ME.Close() '<------------------------------------------' fermeture par bouton
END
PUBLIC SUB TimeBox1_Leave() '<---------------------------' affichage de l'heure qu'il sera
$iTemp = Hour(TimeBox1.Value) * 3600 + Minute(TimeBox1.Value) * 60 + Second(TimeBox1.Value) IF $iTemp <> 0 THEN lblWillBe.Text = Format(DateAdd(Time(Now), gb.Second, $itemp), "hh:nn:ss") ELSE lblWillBe.Text = "" ENDIF
END
PUBLIC SUB btnVisible_Click()
ME.hide
END
|
Si on switch sur ON, l'alarme se déclenchera à l'heure du réglage affiché et la fenêtre se cachera jusqu'à la sonnerie :
====================
Navigation :
<-- Liens du Wiki : <--<-- Accueil du WIKI : <-- ====================
Documentation :
==============================