Ver Mensaje Individual
  #4  
Antiguo 04-02-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
No entiendo la utilidad de tu codigo, supongo que es un experimento.
Creo que tu problema esta en cargar el ListBox (bucle de Add) en el evento OnCreate del Form2 (puesto que aquí llamas a getAlgo que tiene el bucle de carga del ListBox). OnCreate se genera al crearse una ventana, aunque todavía no la veas.

Experimenta lo siguiente aunque para ello MiClass debe ser un formulario:
No utilices Form2.
En el evento de OnClick de Form1 coloca el codigo:
Código:
MiClass * mio = new MiClass ();
mio->ShowModal();
mio->GetAlgo();
delete mio;
Y en GetAlgo() coloca el código que tenías.

De esta forma te aseguras que "mio" esta creado y visualizado de forma modal y luego GetAlgo se encarga de la tarea que le encomendaste. Esto funcionará como tu quieres.

Si Form2 te resulta necesario, entonces, tu código no debería mostrar el mensage desde GetAlgo, sino desde el evento OnChange del ListBox.

Yo utilizo un truco cuando no me queda mas remedio que colocar código que puede ejecutarse antes de visualizar una ventana y es colocar un Timer y en el evento OnTimer coloco ese código "sensible". OnTimer se produce cuando el Form que lo contiene ya es visible. Pero trato de no hacer nunca esto porque me parece "chapucero".

Espero servirte de ayuda.
Saludos.

Última edición por escafandra fecha: 04-02-2008 a las 20:06:20.
Responder Con Cita