Tema: fmx dll form
Ver Mensaje Individual
  #2  
Antiguo 28-05-2022
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

No estoy seguro, pero, ¿tal vez sea porque la variable "f" es una variable local en el procedimiento "Showxxx"? Sería fácil de probar: en lugar de usar es variable local, podrías situar la variable fuera del procedimiento "Showxxx". Por otro lado, mientras escribo se me ocurre, que, si vas a mostrar el formulario de forma "modal", entonces tú mismo podrías usar "f.Free" en el mismo procedimiento "Showxxx".

Yo creo que probaría primero con lo último, es decir, con liberar tú mismo con "f.Free", luego de haber mostrado el formulario, de forma que "Action := TCloseAction.caFree;" no fuese necesario. Si pruebas moviendo la variable "f" afuera del procedimiento "Showxxx", también podría omitirse el uso de "Action := TCloseAction.caFree;", acaso, utilizando la cláusula "finalization" de la unidad / archivos de proyecto, es decir, liberar la ya variable "global" en dicha cláusula "finalization".

P.D. En la cláusula "finalization", si al final te decantas por esto, tendrás que comprobar que la instancia del formulario existe realmente en la variable (f <> nil), puesto que al final eso es lo que parece que está ocurriendo: "Action := TCloseAction.caFree;" está intentando liberar una instancia que no existe, ya digo, si no me equivoco, porque dicha instancia se guarda ahora mismo en la variable local "f", y, esta se libera automáticamente cuando se sale del procedimiento "Showxxx".
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita