Ver Mensaje Individual
  #6  
Antiguo 04-08-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por dalsim Ver Mensaje
neftali asi le he cambiado pero la ventana se abre y automaticamente se cierra no me dela verla a que se deberia
Cita:
Empezado por dec Ver Mensaje
Pues no parece que sea el comportamiento esperado.
Bueno, sí suele ser un comportamiento "normal" aunque no correcto si tenías una cosa como esta:

Código Delphi [-]
try
  Form.ShowModal;
finally
  Form.Free;
end;

y ahora has puesto:
Código Delphi [-]
try
  Form.Show;
finally
  Form.Free;
end;

Al principio cuando tu ejecución llegaba al ShowModal, se detenía en ese punto hasta que cerrabas el formulario, y una vez cerrado se ejecutaba la siguiente línea. Ese es el funcionamiento de las ventanas modales. Por eso, no puedes ejecutar código de otras ventanas, porque tu programa se "detiene" (por decirlo así) en esa línea y no sale del código de ese formulario.

Al cambiar a Show, el funcionamiento cambia; El programa ya no se detiene en esa línea, por eso se pueden ejecutar otros formulartios y por tanto, justo después de ejecutar el Show, ejecuta el Free y se cierra el form.

¿La solución? Fácil. Si ejecutas Show no debes liberar el formulario en la siguiente línea, sino hacerlo, por ejemplo en el OnClose del formulario.

Código Delphi [-]
  Form.Show;

....

  Y en el OnClose de ese formulario pones:

  Action := CaFree;

Pruébalo y dinos qué tal...

Espero haberme explicado decentemente...

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita