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 09-07-2004
Patxi Patxi is offline
Miembro
 
Registrado: nov 2003
Posts: 12
Poder: 0
Patxi Va por buen camino
Esperar a terminar algo

Hola, será una tonteria pero yo no sé cómo hacerlo,
si tengo un timer que en su OnTimer hace una serie de cosas y pulso un botón y en su OnClick quiero hacer algo pero solo cuando la procedure del OnTimer haya terminado, si le pongo un while "esta_ejecutandose" do Application.ProcessMessages; siendo esta_ejecutandose una variable que pongo a True al principio del OnTimer y a False al final, para que espere a que termine lo del OnTimer, se queda con lo del ProcessMessages todo y las instrucciones de dentro del OnTimer también se quedan esperado.
Si alguien me indicara algo, se lo agradecería mucho.
Responder Con Cita
  #2  
Antiguo 09-07-2004
tolomeo tolomeo is offline
Miembro
 
Registrado: jul 2004
Posts: 10
Poder: 0
tolomeo Va por buen camino
Exclamation

Amigo mio, si no te he entendido mal, tienes varias formas de hacer lo que preguntas, pero a groso modo vienen a ser lo mismo, te pongo varios ejemplos:

Si quieres que el Timer se pare cuando Termine :
Código Delphi [-]
 
 TForm1.Timer1Timer(Sender: TObject);
 begin
 <>     TTimer(Sender).Enabled := false;
            
       ... Codigo que quieras poner...
 end;
 
 TForm1.ClickButton1(Sender: TObject);
  begin
      if not Timer1.Enabled then
      begin
          ....  Codigo que quieras poner...
      end;
 end;
Si el Timer siempre esta siempre activo pon una variable boolean
y puedes comprobar en el evento del boton y esa variable esta o
no en True, como si fuese un semaforo, tambien puedes poner el
boton inicialmente en desabilitado, y habilitarlo cuando se termine
el codigo dentro del evento OnTimer de la siguiente manera:
Código Delphi [-]
Button1.Enabled := true;

Facil.
Responder Con Cita
  #3  
Antiguo 10-07-2004
Patxi Patxi is offline
Miembro
 
Registrado: nov 2003
Posts: 12
Poder: 0
Patxi Va por buen camino
Hola, lo que pregunto es algo diferente, si hago lo que me dices:

TForm1.Timer1Timer(Sender: TObject);
begin
<> TTimer(Sender).Enabled := false;
... (CT) Codigo que quieras poner...
end;

TForm1.ClickButton1(Sender: TObject);
begin
if not Timer1.Enabled then
begin
.... (CB) Codigo que quieras poner ...
end;
end;

si el timer está enabled, el código C1 no se ejecutaría, lo que yo pretendo es esperar a que termine el código CT y entonces se ejecute el CB.

Si lo hago de esta otra forma, pues no funciona ya que el CT también se para:

TForm1.Timer1Timer(Sender: TObject);
begin
Ejecutandose:=True;
... (CT) Codigo que quieras poner...
Ejecutandose:=False;
end;

TForm1.ClickButton1(Sender: TObject);
begin
while Ejecutandose do Application.ProcessMessages;
begin
.... (CB) Codigo que quieras poner ...
end;
end;

Bueno muchas gracias.
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 13:02:13.


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