Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-02-2004
davidgaldo davidgaldo is offline
Miembro
 
Registrado: nov 2003
Posts: 220
Poder: 21
davidgaldo Va por buen camino
acción en el tiempo

Hola, me gustaría saber como puedo realizar una acción cada cierto tiempo, es decir, cada media hora, cada 1 hora, 1 al día, etc. Gracias.
Responder Con Cita
  #2  
Antiguo 18-02-2004
Lidia Lidia is offline
Registrado
 
Registrado: dic 2003
Posts: 3
Poder: 0
Lidia Va por buen camino
Con un Timer, lo encontrarás en System. Le puedes poner el intervalo de tiempo que desees.
Responder Con Cita
  #3  
Antiguo 18-02-2004
davidgaldo davidgaldo is offline
Miembro
 
Registrado: nov 2003
Posts: 220
Poder: 21
davidgaldo Va por buen camino
me puedes poner un ejemplo??
Responder Con Cita
  #4  
Antiguo 18-02-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Una opción fácil pero no "precisa" (hablamos de milisegundos a un par de segundos de diferencia), es usar el componente TTimer, que lo encontrás en la paleta System, como te ha dicho Lidia. Este TTimer tiene una propiedad Interval que indica en milisegundos cada cuánto se ejecutará el evento OnTimer. Te recomiendo leer la documentación del mismo para mas precisiones.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 18-02-2004
Amilius Amilius is offline
No confirmado
 
Registrado: ene 2004
Posts: 138
Poder: 0
Amilius Va por buen camino
Cita:
Empezado por delphi.com.ar
Una opción fácil pero no "precisa" (hablamos de milisegundos a un par de segundos de diferencia), es usar el componente TTimer, que lo encontrás en la paleta System, como te ha dicho Lidia. Este TTimer tiene una propiedad Interval que indica en milisegundos cada cuánto se ejecutará el evento OnTimer. Te recomiendo leer la documentación del mismo para mas precisiones.

Saludos!
Algunas detalles:

TTimer encapsula al timer del sistema operativo y tiene una precisión de 54 milisegundos aproximadamente, o unos 18 "ticks" por segundo en Win95, Win98 y Millenium. En XP "parece" que tiene una precisión mayor, por lo menos según lo que pude observar con intervalos de menos de 54 milisegundos. De todas formas, a menos que lo utilices para juegos y efectos gráficos animados, te será bastante útil.

El inconveniente de usar timers más precisos (como el de DelphiX para juegos) es que también utilizan más recursos de cpu y generalmente no es recomendable usar más de un timer de este tipo en una misma aplicación.

Otro detalle que tienes que considerar:

Si el proceso iniciado en el evento "ontimer" tiene un consumo de tiempo de cpu de digamos: 1 segundo y el intervalo de Ttimer es 2 segundos, el siguiente "tick" ocurrirá después de 2 segundos luego que termine el proceso iniciado por el primer "tick", es decir que en lugar que el timer sólo espere 1 segundo esperará 2 segundos, lo que lo hace muy impreciso si el intervalo entre "ticks" es relativamente corto comparado al consumo de tiempo de cpu del proceso inciado por el "ontimer". Generalmente esto no sucede y el tiempo del intervalo de espera es muchísimo mayor al tiempo de proceso.
Responder Con Cita
  #6  
Antiguo 18-02-2004
davidgaldo davidgaldo is offline
Miembro
 
Registrado: nov 2003
Posts: 220
Poder: 21
davidgaldo Va por buen camino
No te he entendido muy bien, lo siento, ponme un ejemplo con lo siguiente, digamos que quiero que ejecutar esto: "dataset.refresh" cada media hora, como lo hago?
Responder Con Cita
  #7  
Antiguo 18-02-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por davidgaldo
digamos que quiero que ejecutar esto: "dataset.refresh" cada media hora, como lo hago?
Esto ya lo preguntaste aquí

// Saludos
Responder Con Cita
  #8  
Antiguo 19-02-2004
Lidia Lidia is offline
Registrado
 
Registrado: dic 2003
Posts: 3
Poder: 0
Lidia Va por buen camino
A ver... Si clickeas dos veces en el Timer te saldrá:

procedure TForm1.Timer1Timer(Sender: TObject);
begin

end;

end.


donde puedes meter todo lo que quieras que se ejecute cada el intervalo de tiempo que le hayas puesto.

Si?
Responder Con Cita
  #9  
Antiguo 21-02-2004
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Se me acaba de ocurrir una idea

¡Buen día a todos!

Así es. En el manejador del evento OnTimer puedes poner el código que desees que se ejecute cada determinado tiempo.


Cita:
Empezado por davidgaldo
...digamos que quiero que ejecutar esto: "dataset.refresh" cada media hora...
Creo que agregaré una propiedad a los componentes data set que he creado, para que tengan la funcionalidad de autorefrescarse cada cierto tiempo, siempre y cuando se encuentren en estado dsBrowse, entre otras condiciones.

Código:
{ Intervalo de Refrescado cada 30 minutos }
Tabla.InteRefr := 1800000;
Lástima que Delphi no tenga todavía herencia insertada, para poder hacer esto de forma centralizada en una clase directamente derivada de TDataSet, e insertada como nuevo padre de todas sus descendientes. Así no tendría que modificar el código de varias clases, sino de una sóla.


Un abrazo. ¡Hasta pronto!

Al González .
Responder Con Cita
  #10  
Antiguo 23-02-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Cita:
Empezado por Al González
¡Buen día a todos!
Lástima que Delphi no tenga todavía herencia insertada, para poder hacer esto de forma centralizada en una clase directamente derivada de TDataSet...
Esto es un carma para ti

Puedes hacerlo mediante un objeto externo, que tenga enlazado un TDataSet y se encargue de refrescarlo..

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #11  
Antiguo 25-02-2004
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Buen día a todos!

Gracias Delphi.com.ar

Si, en realidad hay muchas soluciones a la falta de herencia insertable. Pero ¡ah, cómo hace falta! .

La libertad de poder conducir un auto potente sin necesidad de escoltas. ¿Me entiendes verdad?

Al González .

Última edición por Al González fecha: 25-02-2004 a las 05:23:44. Razón: corregir palabra
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 11:17:48.


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