Hola: Necesitaría en una aplicación Delphi (o en una VB6, si nadie puede responder en Delphi) mostrar un reloj en pantalla (digital o analógico) que muestre el horario de la máquina o (mejor) el tiempo que está corriendo el programa. El tema es así: Estoy desarrollando una aplicación que deriva en un proceso térmico. Me resultaría mejor que en lugar de una respuesta fija (del tipo "Debes calentar 15 segundos") muestre el reloj contando regresivamente los tiempos.
Gracias.
1 respuesta
Respuesta de krinker
1
1
krinker, Redes, instalación de SSOO, mantenimiento
Visual basic tiene funciones predefinidas para obtener la fecha/hora del sistema, aunque para lo que tu quieres hacer, el control timer te vendría bien te pego la descripción y el código fuente de una aplicación de ejemplo (sacado de la ayuda de VB 6 - MSDN) DEFINICIÓN: ---------------------------- Los controles Timer responden al paso del tiempo. Son independientes del usuario y puede programarlos para que ejecuten acciones a intervalos periódicos de tiempo. Un uso típico es comprobar la hora del sistema para ver si es el momento de ejecutar alguna tarea. Los cronómetros también son útiles para otros tipos de procesamiento en segundo plano. Figura 7.46 El control Timer Los controles Timer tienen una propiedad Interval que especifica el número de milisegundos transcurridos entre un evento del cronómetro y el siguiente. A menos que esté desactivado, un control Timer sigue recibiendo un evento (llamado evento Timer) a intervalos iguales de tiempo. La propiedad Interval presenta algunas limitaciones que debe tener en cuenta al programar un control Timer: Si cualquier aplicación carga mucho al sistema, por ejemplo con bucles muy largos, cálculos intensivos o acceso a unidades, a la red o a puertos, puede que una aplicación no reciba los eventos Timer con la frecuencia especificada en la propiedad Interval. El intervalo puede estar entre 0 y 64.767, ambos inclusive, lo que significa que incluso el mayor intervalo no puede ser mucho mayor de un minuto (unos 64,8 segundos). No se garantiza que el intervalo tenga siempre la misma duración. Para asegurar la precisión, el cronómetro debe comprobar la hora del sistema cuando sea necesario, en lugar de mantener el tiempo acumulado de forma interna. El sistema genera 18 pasos de reloj por segundo, de forma que aunque la propiedad Interval se mide en milisegundos, la precisión real del intervalo no es mayor que una decimoctava parte de segundo. Los controles Timer deben estar asociados a un formulario. Por tanto, para crear una aplicación de cronómetro, debe crear al menos un formulario (aunque no tiene que hacerlo visible si no lo necesita para algún otro fin). ---------------------------------------- Aplicación de ejemplo: FORMULARIO; EVENTO CLICK----------- Private Sub Form_Click() AlarmTime = InputBox("Escriba la hora de alarma", "Alarma de VB", AlarmTime) If AlarmTime = "" Then Exit Sub If Not IsDate(AlarmTime) Then MsgBox "La hora no es válida." Else ' La cadena devuelta por InputBox es una hora válida, AlarmTime = CDate(AlarmTime) ' de modo que se almacena en AlarmTime como fecha/hora. End If End Sub -------------------------------- CONTROL TIMER: Static AlarmSounded As Integer If lblTime.Caption <> CStr(Time) Then ' Ahora el número de segundo es diferente del mostrado. If Time >= AlarmTime And Not AlarmSounded Then Beep MsgBox "Alarma a las " & Time, , "Alarma" AlarmSounded = True ElseIf Time < AlarmTime Then AlarmSounded = False End If If WindowState = conMinimized Then ' Si está minimizado, actualiza el título del formulario cada minuto. If Minute(CDate(Caption)) <> Minute(Time) Then SetCaptionTime Else ' Si no, actualiza la etiqueta del formulario cada segundo. lblTime.Caption = Time End If End If