Gambas France BETA


Pas de compte ? Incription

Faire une Alarme :

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 :



==============================