Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   dudas evento OnActivate (https://www.clubdelphi.com/foros/showthread.php?t=13662)

triniti 26-08-2004 12:10:36

dudas evento OnActivate
 
Buenos dias a todos! Tengo una duda que me está fastidiando desde hace un rato:

En una aplicación de varios formularios, todos ellos de formStyle "fsNormal", tengo un formulario principal siempre visible, desde el cual llamo a los secundarios.
La llamada que hago a los secundarios es de tipo modal, entonces, cuando cierro el fomulario secundario que esté abierto, el foco vuelve a entrar en el principal, que es el único que queda abierto.
En este momento de la ejecución del programa es cuando se deberían realizar una serie de procedimientos que yo he declarado en el evento onActivate del formulario principal, pero me he dado cuenta de que dicho evento no se realiza.
Yo pensaba que siempre que el foco éntraba en el formulario, se producia el evento OnActivate, pero he visto que no es así, y entonces he estado buscando otros eventos y otra forma de hacer que esos procedimientos se ejecuten, pero no he encontrado la solución.

El problema es fácil, pero no se si me he expresado bien. De todas formas, gracias por adelantado. Saludos!!

sur-se 26-08-2004 12:54:10

Hola. Podrías poner tu llamada a esos procedmientos después de la free del cierre de la ventana modal. Crea un procedimiento general y dentro de el mete todos esos procesos. Después de cada shomodal y free de las pantallas, llama a este nuevo procedimiento y ya está.

Salu2.

__cadetill 26-08-2004 12:59:00

Cita:

Empezado por triniti
Tengo una duda que me está fastidiando desde hace un rato

Define rato

:D

Al grano. Es de suponer que haces algo así:

Código:

procedure TfmMenu.Button1Click(Sender: TObject);
begin
  MiForm := TMiForm.Create(Application);
  try
    try
      MiForm.ShowModal;
    finally
      FreeAndNil(MiForm);
    end;
  except
    on E: Exception do
      ShowMessage(E.Message);
  end;
end;

pues puedes hacer algo así:

Código:

procedure TfmMenu.Button1Click(Sender: TObject);
begin
  MiForm := TMiForm.Create(Application);
  try
    try
      MiForm.ShowModal;
      // -> aqui lo que tu quieras despues de cerrar el formulario
    finally
      FreeAndNil(MiForm);
    end;
  except
    on E: Exception do
      ShowMessage(E.Message);
  end;
end;

Espero te sirva

triniti 26-08-2004 16:39:53

[quote=cadetill]Define rato
jajaja, era un rato, dejémoslo ahí.

Bueno, tengo que deciros que al final lo que he hecho ha sido crear un procedimiento publico en el formulario principal donde guardo todos los procesos, y que llamo desde los formularios secundarios, despues de hacer el close de éstos. Eso es a lo que se refería Sur-se.
Y lo que decía Cadetill creo no me servía porque el formulario al que yo hacia referencia ya estaba creado y mostrado (era el formulario principal de la aplicación), hubiese servido en el caso contrario.

Muchas gracias a los dos por molestaros en darme soluciones, que siempre sirven, si no para ahora, para en un caso futuro, no?

Chaooo!:) :) :)

triniti 26-08-2004 16:42:33

Ups!!
 
Ups! Creo que lo de citar tendré que estudiarlo, jajaja, nunca lo habia hecho y pensaba que era así.
Pido disculpas por destruir la armonía del foro, jeje.

marto 26-08-2004 16:51:28

Cita:

Empezado por triniti
Y lo que decía Cadetill creo no me servía porque el formulario al que yo hacia referencia ya estaba creado y mostrado (era el formulario principal de la aplicación), hubiese servido en el caso contrario.

¿Puedes explicar eso? Creo que lo que decía Cadetill te tiene que servir y no he entendido nada de ese párrafo :confused:

__cadetill 26-08-2004 19:57:41

Cita:

Empezado por triniti
Ups! Creo que lo de citar tendré que estudiarlo, jajaja, nunca lo habia hecho y pensaba que era así.

Sí, es así, sólo te ha faltado cerrar la etiqueta con [/quote ] ( sin espacios, claro)

Cita:

Empezado por triniti
jajaja, era un rato, dejémoslo ahí.

vale, pero espero que haya sido largo ;)

Cita:

Empezado por triniti
Bueno, tengo que deciros que al final lo que he hecho ha sido crear un procedimiento publico en el formulario principal donde guardo todos los procesos, y que llamo desde los formularios secundarios, despues de hacer el close de éstos.

En mi ejemplo, el "formulario principal" es el TfmMenu, desde el que se llaman a los demás formularios, por lo que, sería en TfmMenu donde tu has definido ese procedimiento público y, por lo que mi solución también te serviría. Despues del ShowModal, hacer una llamada a ese procedimiento público (que ahora ya podría ser privado)

Como no sabemos lo que hace ese procedimiento, es difícil poder sugerirte mejores alternativas a estas (para no tener que estar pensando en poner la llamadita al procedimiento creado después de la llamada a cada formulario).


La franja horaria es GMT +2. Ahora son las 02:20:36.

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