Página 1 de 1

MultiTimer Ejemplo

Publicado: 08 Nov 2014, 16:47
por Dany
Un simple ejemplo de un multitimer que necesitaba en estoy días.

Imagen

Código: Seleccionar todo

#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <Date.au3>
Global $aMaquinas[12], $aTimer[12], $Secs, $Mins, $Hour, $bState[12], $aTime[12], $aTiempos[12]
Example()

Func Example()
	Opt("GUIOnEventMode", 1)

	GUICreate("Control Cyber", 800, 270)
	GUISetBkColor(0x0093FF)
	GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents")
	GUISetOnEvent($GUI_EVENT_MINIMIZE, "SpecialEvents")
	GUISetOnEvent($GUI_EVENT_RESTORE, "SpecialEvents")
	Load()
	For $i = 0 To 5
		GUICtrlCreateGroup("MAQUINA_" & $i + 1, 10 + ($i * 130), 5, 130, 110)
		GUICtrlSetFont(-1, 10, 700, 2, "Arial")
		GUICtrlSetBkColor(-1, 0xfffffff)
		$aMaquinas[$i] = GUICtrlCreateInput($aTiempos[$i], 15 + ($i * 130), 20, 120, 40, $ES_READONLY)
		GUICtrlSetFont(-1, 22, 600, 0, "Bodoni MT")
		GUICtrlSetBkColor(-1, 0xEA1515)
		GUICtrlCreateButton("Comenzar", 15 + ($i * 130), 70, 120, 40)
		GUICtrlSetFont(-1, 16, 400, 0, "Arial")
		GUICtrlSetOnEvent(-1, "MaquinaEvent")

	Next


	For $i = 0 To 5
		GUICtrlCreateGroup("MAQUINA_" & $i + 7, 10 + ($i * 130), 130, 130, 110)
		GUICtrlSetFont(-1, 10, 700, 2, "Arial")
		GUICtrlSetBkColor(-1, 0xfffffff)
		$aMaquinas[$i + 6] = GUICtrlCreateInput($aTiempos[$i + 6], 15 + ($i * 130), 145, 120, 40, $ES_READONLY)
		GUICtrlSetFont(-1, 22, 600, 0, "Bodoni MT")
		GUICtrlSetBkColor(-1, 0xEA1515)
		GUICtrlCreateButton("Comenzar", 15 + ($i * 130), 195, 120, 40)
		GUICtrlSetFont(-1, 16, 400, 0, "Arial") ;
		GUICtrlSetOnEvent(-1, "MaquinaEvent")

	Next

	GUISetState(@SW_SHOW)


	AdlibRegister("Save", 1000)
	AdlibRegister("Tiempo", 50)

	While 1
		Sleep(30)
	WEnd
EndFunc   ;==>Example

Func Load()
	For $i = 1 To 12
		$aTiempos[$i - 1] = IniRead("tiempos.ini", "Tiempos", "MAQUINA_" & $i, "00:00:00")
	Next
EndFunc   ;==>Load


Func Save()
	For $i = 1 To 12
		If $bState[$i - 1] Then
			IniWrite("Tiempos.ini", "Tiempos", "MAQUINA_" & $i, GUICtrlRead($aMaquinas[$i - 1]))
		Else
			IniWrite("Tiempos.ini", "Tiempos", "MAQUINA_" & $i, "00:00:00")
		EndIf
	Next
EndFunc   ;==>Save

Func Tiempo()
	Local $asTime[12]
	Local $asTime=0
	For $i = 0 To 11
		If $bState[$i] Then
			_TicksToTime(Int(TimerDiff($aTimer[$i])), $Hour, $Mins, $Secs)
			 $asTime = $aTime[$i]
			$aTime[$i] = StringFormat("%02i:%02i:%02i", $Hour, $Mins, $Secs)
			If $asTime <> $aTime[$i] Then GUICtrlSetData($aMaquinas[$i], $aTime[$i])
		EndIf
	Next
EndFunc   ;==>Tiempo

Func MaquinaEvent()
	Local $i = Int(@GUI_CtrlId / 3) - 1
	If $bState[$i] Then
		TimerDiff($aTimer[$i])
		$bState[$i] = False
		GUICtrlSetData(@GUI_CtrlId, "Comenzar")
		GUICtrlSetBkColor(@GUI_CtrlId - 1, 0xEA1515)
	Else
		GUICtrlSetData(@GUI_CtrlId, "Pausar")
		GUICtrlSetBkColor(@GUI_CtrlId - 1, 0x2DD25)
		$bState[$i] = True
		$aTimer[$i] = TimerInit()
	EndIf

EndFunc   ;==>MaquinaEvent




Func SpecialEvents()
	Local $iMsg = 0
	Select
		Case @GUI_CtrlId = $GUI_EVENT_CLOSE
			$iMsg = MsgBox(4, "Control Cyber", "¿Reaalmente quiere salir?")

			If $iMsg = 6 Then
				GUIDelete()
				Exit
			EndIf


		Case @GUI_CtrlId = $GUI_EVENT_MINIMIZE

		Case @GUI_CtrlId = $GUI_EVENT_RESTORE

	EndSelect
EndFunc   ;==>SpecialEvents


Saludos

Re: MultiTimer Ejemplo

Publicado: 20 Nov 2014, 07:19
por XPyro
Muy bueno Dany, tenia uno de estos planes en mente pero con el poco tiempo que me cargo solo los dejo incompletos, con esta ayudas mucho espero un dia terminar todos los planes o al final los publicare en el foro para que los terminen ustedes :smt005

Muchas gracias por compartir :smt006

Re: MultiTimer Ejemplo

Publicado: 20 Nov 2014, 15:15
por yasmany
Gracias Dany por el ejemplo :smt001
gracias por compartir ... :smt024