Ciao a tutti
Mi serviva un countdown con stop e resume, e, dopo aver spulciato il forum, dove non ho trovato nulla di esaustivo, ho approfittato del thread dei millisecondi del timer e ne ho fatto uno semplice semplice che nel caso potrebbe servire a qualcuno come spunto ed eventualmente (senza eventualmente) migliorarlo.
Incollo il codice e allego lo zip (il progetto contiene un riferimento alla libreria stringfunction)
IlCasti
Mi serviva un countdown con stop e resume, e, dopo aver spulciato il forum, dove non ho trovato nulla di esaustivo, ho approfittato del thread dei millisecondi del timer e ne ho fatto uno semplice semplice che nel caso potrebbe servire a qualcuno come spunto ed eventualmente (senza eventualmente) migliorarlo.
Incollo il codice e allego lo zip (il progetto contiene un riferimento alla libreria stringfunction)
IlCasti
B4X:
#Region Project Attributes
#ApplicationLabel: B4A Example
#VersionCode: 1
#VersionName:
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: unspecified
#CanInstallToExternalStorage: False
#End Region
#Region Activity Attributes
#FullScreen: False
#IncludeTitle: True
#End Region
Sub Process_Globals
Dim TempoCountdown As Timer
End Sub
Sub Globals
Dim StrUt As StringFunctions
StrUt.Initialize
Dim StartTime As Long
Dim InizioTimer As Long
Dim TempoVisualizzato As Long
Dim FineTimer As Long
Private Clock As Button
Private TimeClock As Label
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("Clock")
TempoCountdown.Initialize("Countdown",100)
InizioTimer = DateTime.TimeParse("00:00:10")
FineTimer = DateTime.TimeParse("00:00:00")
TempoVisualizzato = InizioTimer
TimeClock.Text = "00:10:0"
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub Countdown_Tick
TimeClock.Text = ConvertTicksToHHMMSSMS(TempoVisualizzato)
End Sub
Sub ConvertTicksToHHMMSSMS(Time As Long) As String
Dim Diff As Long = DateTime.Now - StartTime
TempoVisualizzato = InizioTimer - Diff
Dim HH,MM,SS,MS As Int
Dim T As Long=Abs(Time)
If TempoVisualizzato < FineTimer Then
TempoCountdown.Enabled = False
Return "00:00:0"
Else
MS = T Mod 1000
SS = (T/1000) Mod 60
MM = (T/60000) Mod 60
HH = (T/3600000) Mod 24
Return NumberFormat(MM,2,0) & ":" & NumberFormat(SS,2,0) & "." & StrUt.Left(NumberFormat(MS, 2 ,0),1)
End If
End Sub
Sub Clock_Click
If Clock.Tag = "START" Then
Clock.Tag="STOP"
Clock.Text = ">"
StartTime = DateTime.Now
TempoCountdown.Enabled = True
Else
Clock.Tag="START"
Clock.Text="||"
TempoCountdown.Enabled = False
InizioTimer = TempoVisualizzato
End If
End Sub