Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Borrar Edit automático (https://www.clubdelphi.com/foros/showthread.php?t=75460)

Groonan 25-08-2011 15:29:08

Borrar Edit automático
 
Hola a todos,

soy novato aqui y con Delphi, por lo que ahi va mi primera duda. Se puede hacer que se borre el texto de un edit cuando el reloj llegue a las horas en punto? Ya tengo el reloj funcionando en mi aplicación, en un label, tal que asi...

LabelHora.Caption:= TimeToStr(now);

Gracias, a ver si tengo suerte y alguien puede ayudar.

Un saludo.

oscarac 25-08-2011 15:32:57

hola... bienvenido al foro...

podrias utilizar el componente Timer ahi podrias hacer preguntas en el OnTimer que si es la hora determinada el edit se ponga en blanco

saludos

Groonan 25-08-2011 15:42:47

Borrar Edit automático
 
Cita:

Empezado por oscarac (Mensaje 410090)
hola... bienvenido al foro...

podrias utilizar el componente Timer ahi podrias hacer preguntas en el OnTimer que si es la hora determinada el edit se ponga en blanco

saludos

Hola y gracias.

Entonces en el evento onTimer del Timer1 (que es mi reloj, añado esto?? por ejemplo)

procedure TForm1.Timer1Timer(Sender: TObject);
begin
LabelHora.Caption:= TimeToStr(now);
Edit1.Text:= ' ';
end;

Perdon, soy muy novato, pero creo que me falta añadir algo para que a las horas en punto se borre automáticamente el texto del Edit1 y no se que poner.

Lo he buscado bastante pero no lo encuentro.

Gracias de nuevo.

Groonan.

oscarac 25-08-2011 15:49:17

que es lo quieres decir con.. las horas en Punto?

09:00
10:00
11:00

algo asi?

Groonan 25-08-2011 15:51:31

Cita:

Empezado por oscarac (Mensaje 410093)
que es lo quieres decir con.. las horas en Punto?

09:00
10:00
11:00

algo asi?


Si, si, exactamente asi. Cada vez que llegue a cada hora en punto que se borre el Edit.

Un saludo.

oscarac 25-08-2011 16:05:42

a ver
normalmente no tengo esas caracteristicas en los programas que hago pero puedes usar mas o menos esto

Código Delphi [-]
 
Minutos := Copy(TimeToStr(GetTime),4,2);
if Minutos = '00' Then
  Edit1.text := ''

ecfisa 25-08-2011 16:10:32

Hola.

Se me ocurre que podrías hacer:
Código Delphi [-]
uses DateUtils;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if MinuteOf(Now)=0 then
    Edit1.Text:= '';
end;

Saludos.

Groonan 25-08-2011 16:30:05

Cita:

Empezado por oscarac (Mensaje 410096)
a ver
normalmente no tengo esas caracteristicas en los programas que hago pero puedes usar mas o menos esto

Código Delphi [-] Minutos := Copy(TimeToStr(GetTime),4,2); if Minutos = '00' Then Edit1.text := ''

Que tipo de variable es Minutos? Lo digo por declararla antes no?

Gracias.

oscarac 25-08-2011 16:32:28

Código Delphi [-]
if minutos = '00' then

debe ser string... revisa el ejemplo que tambien dejo Flash Ecfisa

Groonan 25-08-2011 16:37:09

Cita:

Empezado por ecfisa (Mensaje 410097)
Hola.

Se me ocurre que podrías hacer:
Código Delphi [-]uses DateUtils; procedure TForm1.Timer1Timer(Sender: TObject); begin if MinuteOf(Now)=0 then Edit1.Text:= ''; end;


Saludos.


Uff, soy muy novato... MinuteOf es otra variable no? La declaro antes? De que tipo es?

Gracias.

ecfisa 25-08-2011 16:44:27

Hola.

No, MinuteOf es una función que está en la unit DateUtils (por lo que hay que incluirla) y devuelve los minutos del argumento (de tipo TDateTime) que se le pase.
La función Now devuelve la fecha y hora actuales en formato TDateTime, por lo tanto se le envía a MinuteOf para que extraiga los minutos.

El código que te puse arriba debería funcionar con sólo pegarlo y copiarlo.

Saludos.

Groonan 25-08-2011 17:03:14

Cita:

Empezado por ecfisa (Mensaje 410105)
Hola.

No, MinuteOf es una función que está en la unit DateUtils (por lo que hay que incluirla) y devuelve los minutos del argumento (de tipo TDateTime) que se le pase.
La función Now devuelve la fecha y hora actuales en formato TDateTime, por lo tanto se le envía a MinuteOf para que extraiga los minutos.

El código que te puse arriba debería funcionar con sólo pegarlo y copiarlo.

Saludos.


Voy a probar.

Saludos.

Groonan 25-08-2011 17:21:54

Cita:

Empezado por Groonan (Mensaje 410107)
Voy a probar.

Saludos.

Si, funciona !!!!!.

Aunque si quiero seguir añadiendo cosas al Edit, me lo borra automaticamente despues de llegar la hora, supongo que habra alguna manera de que solo funcione a la hora en punto exacto y no a partir de la hora en punto. Se puede parar o pausar la linea:

Edit1.Text:= '';

para que yo siga añadiendo mas datos en el edit, hasta que llegue la proxima hora en punto.

Puede ser posible?

Gracias.

ecfisa 25-08-2011 17:30:47

Cita:

Aunque si quiero seguir añadiendo cosas al Edit, me lo borra automaticamente despues de llegar la hora, supongo que habra alguna manera de que solo funcione a la hora en punto exacto y no a partir de la hora en punto.
Hola Groonan.

El código anterior limpia el texto del TEdit cuando llega a una hora en punto, no entiendo bién que es lo que deseas hacer.

Un saludo.

oscarac 25-08-2011 17:31:37

Cita:

Empezado por Groonan (Mensaje 410113)
Si, funciona !!!!!.

Aunque si quiero seguir añadiendo cosas al Edit, me lo borra automaticamente despues de llegar la hora, supongo que habra alguna manera de que solo funcione a la hora en punto exacto y no a partir de la hora en punto. Se puede parar o pausar la linea:

Edit1.Text:= '';

para que yo siga añadiendo mas datos en el edit, hasta que llegue la proxima hora en punto.

Puede ser posible?

Gracias.


pues lo que ecfisa y yo te hemos sugerido deberia funcionar de la siguiente manera

si el reloj marca las horas en punto (09:00, 10:00, 11:00... ) el edit se blanquea

muy particularmente no le veo la utilidad a esto (salvo que tu tengas una explicacion de porque lo haces asi)... para poder tener un criterio mas amplio seria bueno que detallaras un poquito mas cual es el objetivo o que pretendes hacer con esa rutina... si forma parte de algo mas... comprendes?

ecfisa 25-08-2011 17:36:38

Hola de nuevo.

Ahora entiendo el problema :), te lo sigue limpiando hasta que se cumpla el minuto 1...

Entonces probá de este modo:
Código Delphi [-]
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if (MinuteOf(Now)=0)and(SecondOf(Now)=0) then
    Edit1.Text:= '';
end;

Saludos.

oscarac 25-08-2011 17:38:21

lo mismo pense.. el segundero aun no llega a 60...

debo ser mas rapido... es escribir... ecfisa me gana todas :D:D:D

Groonan 25-08-2011 17:49:23

PERFECTO !!!!

Gracias a los dos. Se que las personas tenemos cada una un problema espefico y muchas veces, si ademas el que pregunta es tan novato como yo, vosotros contestais de la mejor manera posible, pero me imagino que os cuesta comprender a nuestras peticiones.

He empezado a trabajar en la puerta de un lugar donde tengo que controlar el aforo que entra y sale cada hora...manualmente. Gracias a vosotros dos acabo de crear el programa que me va a evitar usar el boligrafo y papel durante las 9 horas de trabajo.

Gracias de nuevo y si yo puedo ayudaros en algo, contad conmigo.

Un saludo.

Chris 25-08-2011 17:53:14

Execelente codigo Ecfisa!

Solo quisiera agregarle algo:

Código Delphi [-]
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if SecondOf(Now) = 0 then
    TTimer(Sender).Interval := 60000; // ejecutarse cada 60 segundos

  if (MinuteOf(Now)=0)and(SecondOf(Now)=0) then
    Edit1.Text:= '';
end;

Con eso el codigo el Timer empezara a ejecutar cada minuto, en lugar de cada segundo, aliviando un poco el procesador y la aplicacion. Se pudiera hacer algo similar para que el codigo se ejecutase cada hora, pero los cronometros no son muy precisos y al final terminarias con impresiciones de un par de segundos si aunmentas el intervalo en una hora por ejemplo.

Saludos,
Chris

PD.: Disculpen la ausencia de acentos, estoy usando un LiveCD de Ubuntu y no se me configuro correctamente el teclado :D


La franja horaria es GMT +2. Ahora son las 12:05:09.

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