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. |
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 : 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:
Facil.;) |
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. |
La franja horaria es GMT +2. Ahora son las 12:21:29. |
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