Ver Mensaje Individual
  #11  
Antiguo 06-09-2003
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Reputación: 22
javiermorales Va por buen camino
Gracias Julia.T por responder. Te comento un poco más el funcionamiento que tiene la aplicación:

Desde la pantalla principal, que nunca se cierra salvo para finalizar la aplicación, es donde se construyen los formularios, cuando se selecciona la opción de menu, que a su vez construyo dinamicamente basándome en la base de datos donde están las autorizaciones que tenga cada usuario, así como las opciones de menú asociadas y el nombre de cada uno de los formularios que se deben lanzar.

Se utiliza Show y no Showmodal, por que no es el formulario padre quien libera al formulario, sino que en módulo aparte es donde tengo el procedimiento de liberación. Además si utilizase ShowModal, quedaría restringida la utilización de opciones de menú diferentes al mismo tiempo (sabemos que eso no es posible, pero sí podemos ir cambiando de formulario en la ejecución)

Es decir el main crea la clase y lanza el formulario, asignando a un array global de clases el formulario creado. El formulario creado puede terminar su ejecución de dos maneras:

1.- Haciendo click en la cruz superio derecha, con lo que se llama al evento close del formulario:
Código:
Procedimiento Close del formulario
  Pantalla[i].Free;
  Pantalla[i] := nil;
2.- Pulsando la tecla ESC, que esta reprogramada, para llamar a un procedimiento global de liberación:
Código:
Procedimiento Global de Liberación
Pantalla[i].Close;
if (Pantalla[i] <> NULL) then//No se ejecuta Nunca
begin
  Pantalla[i].Free;
  Pantalla[i] := nil;
end;
El error me lo da al utilizar la tecla reprogramada, pero no en ninguna de las líneas de código, sino al termimar de ejecutar todo el código. Realizando las comprobaciones, el formulario se libera y todo funciona correctamente, pero le salta ese error al usuario y no queda demasiado bién.

Muchas Gracias de nuevo Julia, espero haberme explicado un poco mejor esta vez. Un saludo
Responder Con Cita