Ver Mensaje Individual
  #8  
Antiguo 27-06-2017
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Reputación: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Lo más "fácil" sería usar dos TTimer: uno para los 30 segundos y otro para cada segundo, tal como comenta ecfisa, pero yo usaría sólo un TTimer que se activara cada segundo y fuera actualizando una variable (o el propio "Tag" del componente) y el TLabel hasta llegar a treinta, más o menos así:
Código Delphi [-]
INTERFACE

  TYPE
  (* El formulario. *)
    TMiForm = CLASS (TForm)
      ElTimer: TTimer;
      ElLabel: TLabel;

      PROCEDURE onTimerTick (Sender: TObject);
    { ... }
    PRIVATE
      fContador: INTEGER = 0;
    { ... }
    END;

IMPLEMENTATION

{ ... }

  PROCEDURE TMiForm.onTimerTick (Sender: TObject);
  BEGIN
    INC (fContador);
    IF fContador >= 30 THEN
    BEGIN
    { Aquí se hace la operación que se requiera, o se activa un evento, o lo que sea
       y se reinicia el contador. }
      fContador := 0
    END;
    ElLabel.Caption := IntToStr (fContador)
  END;

{ ... }
Las ventajas son que usas menos recursos (y aún menos si en vez del campo fContador usas la propiedad Tag del TTimer), pero principamente evitaras tener que sincronizar dos TTimer diferentes, que puede parecer que no pero puede dar problemas.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 27-06-2017 a las 10:53:59.
Responder Con Cita