Ver Mensaje Individual
  #6  
Antiguo 12-08-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Reputación: 25
__cadetill Va por buen camino
Solo unas aclaraciones

Sabes la diferencia entre show y showmodal? Con Show se muestra el formulario deseado, pero la ejecucion del form "padre" continua. Con ShowModal, se visualiza el formulario y la ejecucion del form "padre" se para hasta cerrar la ventana. Bien, vista esta aclaracion vamos a ver porque con Show funciona mal y ShowModal bien.

Si te fijas, tienes una variable local, EditDecretos. Recordemos el ambito de las variables locales: estas SOLO estan "vivas" DENTRO del procedimiento o funcion donde son declaradas. Como hemos visto que con Show el form "padre" sigue la ejecucion de la aplicación.... pues llega a salir del procedimiento, por eso el form creado se destruye, porque se destruye la variable con la que lo creaste. Se ha entendido?

Para crear un formulario no hace falta que declares esa variable. Puedes poner simplemente

Código:
procedure TDecretos.NovoClick(Sender: TObject);
Begin
  EditDecretos:=TEditDecretos.Create(self);
  with EditDecretos do
  begin
    Modo:='A';
    Show;  // o ShowModal, como quieras o prefieras
  end;
  Grid.SetFocus;
end;
Pero... me sigue quedando la duda si el form creado recibe o no el parametro (que en teoria deberia de recibir)

Bueno, espero te sirva y quede algo mas claro el tema de las variables locales
Responder Con Cita