Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Desarrollo en Delphi para Android (https://www.clubdelphi.com/foros/forumdisplay.php?f=57)
-   -   cuenta regresiva en android (https://www.clubdelphi.com/foros/showthread.php?t=95019)

pablocarlos 14-01-2021 18:30:41

cuenta regresiva en android
 
Saludos! Espero haber sido preciso en el titulo del hilo. Necesito, en lo posible, me orienten en hacer un reloj (label) que sea en cuenta regresiva dias, horas, minutos, segundos. Cuando hablo reloj en cuenta regresiva seria ---> por ejemplo faltan 12:20:30:10 al segundo siguiente 12:20:30:09 y asi hasta 00:00:00:00 y al llegar a cero comience nuevamente. Se agradece su tiempo!!!
Edito por olvido. Trabajo con rad studio 10.4

Casimiro Noteví 15-01-2021 18:27:31

Hola, ¿qué llevas hecho?, ¿cómo lo has planteado? ¿en qué tienes problemas?

pablocarlos 15-01-2021 22:49:30

Gracias Casimiro por tu tiempo. Este es el código pero el "update" no me lo reconoce rad studio, si en delphi 7
Código Delphi [-]
procedure TForm1.btnStartClick(Sender: TObject);
var
 Min,Hour,Sec:Integer;
 MinStr,HourStr,SecStr:String;
begin
 Hour := StrToInt(HoursEdt.Text);
 Min := StrToInt(MinsEdt.Text);
 Sec := StrToInt(SecEdt.Text);
 HourStr := IntToStr(Hour);
 MinStr := IntToStr(Min);
 SecStr := IntToStr(Sec);
  while Hour > -1 do
   begin
     while Min > -1 do
      begin
        while Sec > -1 do
         begin
           Sleep(1000);
           Sec := Sec -1;
           SecStr := IntToStr(Sec);
           lContador.Text := HourStr + ':' + MinStr + ':' + SecStr;
           //lContador.Update;
         end;
      Min := Min -1;
      Sec := 60;
      MinStr := IntToStr(Min);
      lContador.Text := HourStr + ' : ' + MinStr + ' : ' + SecStr;
      lContador.Update;
      end;
   Hour := Hour -1;
   Min := 60;
   HourStr := IntToStr(Hour);
   lContador.Text := HourStr + ' : ' + MinStr + ' : ' + SecStr;
   lContador.Update;
   end;

Casimiro Noteví 16-01-2021 18:50:18

Cita:

Empezado por pablocarlos (Mensaje 539702)
... no me lo reconoce rad studio, si en delphi 7

¿Que no te reconoce el qué?

pablocarlos 16-01-2021 20:51:02

Cita:

Empezado por Casimiro Notevi (Mensaje 539704)
¿Que no te reconoce el qué?

en la etiqueta lcontador. "update"

Casimiro Noteví 16-01-2021 22:53:54

¿Y qué es lcontador?

Por favor, lee nuestra guía de estilo, gracias.

pablocarlos 16-01-2021 23:25:48

Disculpas. lContador es un label. Gracias

Casimiro Noteví 17-01-2021 12:00:40

Creo que no estás siendo claro con la exposición de tu problema.
Por ejemplo, lContador.Text no existe en delphi7, en todo caso sería lContador.Caption.
Por favor, replantea correctamente tu duda. No olvides nuestra guía de estilo, gracias.

Neftali [Germán.Estévez] 18-01-2021 08:55:33

Cita:

Empezado por pablocarlos (Mensaje 539702)
Gracias Casimiro por tu tiempo. Este es el código pero el "update" no me lo reconoce rad studio, si en delphi 7

Tu código es correcto, simplemente hay un par de detalles.

1) Lo primero es que no hace falta hacer un Update de los controles/componentes; En el caso de un Label, por ejemplo, sólo cambiando la propiedad Text (o Caption en VCL) basta para cambiar el valor. Por tanto las líneas que hacen el Update no son necesarias.

2) Si quitas esas líneas, verás que tu aplicación no responde y el TLabel no cambia. Eso lleva al segundo punto.
Tu código se ejecuta continuamente y no da tiempo a procesar mensajes de la cola de Windows, entre ellos los que actualizan la parte visual.
Para eso delphi tiene una instrucción.

Código Delphi [-]
Application.ProcessMessages;

Esto le indica al programa que en ese punto, detenga la ejecución y procese mensajes de la cola de Windows.
Se suele usar en códigos como el tuyo, donde hay un bucle que ejecuta código continuamente.

Por lo tanto, si quitas las las líneas que incluyen los Updatesy añades la línea anterior debajo del Sleep, por ejemplo, el programa debería funcionar correctamente.

pablocarlos 19-01-2021 16:55:02

Gracias Casimiro por tu tiempo que es muy valioso. Gracias Neftali por tu explicación y conocimientos compartidos. El codigo quedo de la siguiente manera (ahora me ocuparé de algunos detalles.
Código Delphi [-]
procedure TForm1.btnStartClick(Sender: TObject);
var
 Min,Hour,Sec:Integer;
 MinStr,HourStr,SecStr:String;
begin
 Hour := StrToInt(HoursEdt.Text);
 Min := StrToInt(MinsEdt.Text);
 Sec := StrToInt(SecEdt.Text);
 HourStr := IntToStr(Hour);
 MinStr := IntToStr(Min);
 SecStr := IntToStr(Sec);
  while Hour > -1 do
   begin
     while Min > -1 do
      begin
        while Sec > -1 do
         begin
           Sleep(1000);
           Application.ProcessMessages;
           lContador.Text;
           Sec := Sec -1;
           SecStr := IntToStr(Sec);
           lContador.Text := HourStr + ':' + MinStr + ':' + SecStr;
         end;
      Min := Min -1;
      Sec := 60;
      MinStr := IntToStr(Min);
      lContador.Text := HourStr + ':' + MinStr + ':' + SecStr;
      end;
   Hour := Hour -1;
   Min := 60;
   HourStr := IntToStr(Hour);
   lContador.Text := HourStr + ' : ' + MinStr + ':' + SecStr;
   end;

end;
Está funcionando, lo dejo por aqui, tal vez a alguien le haga falta. Gracias totales!

Casimiro Noteví 19-01-2021 20:59:22

^\||/^\||/^\||/


La franja horaria es GMT +2. Ahora son las 21:30:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi