![]() |
Error al Crear Ventanas dinámicamente
Hola amigos:
Tengo un entorno MDI en Delphi 6 Empresarial, con errores de Acceso a Memoria, y puede que la correccíon que he hecho sea peor que la enfermedad. Todas la ventanas son Ventanas Hijas, creadas dinámicamente. Creo una SubVentana dentro de otra, el esquema es mas o menos el siguiente: Código:
----------------- La razón de poner esa línea, es que la primera vez que abro la subVentana desde Form1 y Form2 va bien, pero una vez cerradas las subventanas, cuando las abro de nuevo, los Toolbutton no se Habilitan si queda una instancia de TSbuVentana (parece como si se cruzaran los punteros de Form1_Sub y Form2_Sub). Ejemplo, Abro las siguientes Ventanas: Form1 Form1_Sub // el ToolButton se INhabilita Form2 Form2_Sub // el ToolButton se INhabilita Cierro las Ventanas: Form1_Sub // el ToolButton se Habilita Form2_Sub // el ToolButton se Habilita Abro de nuevo: Form1_Sub // el ToolButton se INhabilita Form2_Sub // el ToolButton se INhabilita **Hasta aqui todo correcto** Cierro : Form1_Sub // El ToolButton se queda INHABILITADO (grrrrrrr) Form2_Sub // **** Se habilitan los 2 ToolButtons, el de Form1 y el de Form2 ¿?¿?¿ Por qué ?¿?¿? He intentado explicarme lo mejor posible,si he dejado algo por comentar, no dudeis en preguntarme. Muchisimas gracias de antemano. |
no se si fue error al copiar y pegar pero revisa el codigo del form2 en el finally
Código:
finally Otra cosa no es un entorno mdi el que trabajas es un entrono modal, el entorno mdi no debe bloquear el menu de las otras opciones al ingresar a una pantalla |
Gracias por responder.
Cita:
Cita:
Cita:
He mirado el mensaje de Liberar Formularios en este mismo foro que más o menos explica la implementación de FreeAndNil,( lo que dice Delphi.com.ar ), pero no termino de comprender "mi error" o por lo menos, saber si lo que hago tiene errores. Todos sabemos que: "no obtener mensajes de error, no significa que algo esté bien". Saludos, y gracias por interesarte, espero haber aclarado algo más el tema |
Seguro que esta parte está bien??
.Create(application); para Tform2. "application" en la segunda ventana hija de la primera ventana hija, sería bueno que chequees la documentación de ayuda para ver cual es el parámetro indicado para ese constructor. << Create creates and initializes a new TForm object or an object derived from TForm. constructor Create(AOwner: TComponent); override; Description Use Create to create and initialize a new TForm object or an object derived from TForm. AOwner is the owner of the TForm object. Create calls the CreateNew method, passing it AOwner, and then performs initialization tasks if the object is derived from TForm. >> AOwner no debería ser la ventana hija (para crear la ventana "nieta") en lugar de "application" << .Create(self); >> ? |
Por ahí no se me habia ocurrido investigar.... Gracias por el rayo de luz.
|
de todas formas hay algo que no me cuadra aun, si las ventanas estan como modales porq deshabilitar los botones si la ventana modal no te deja acceso a ellos????
|
Muy hábil Eduardo ;)
como ya era bastante dificil intentar explicar cual era el fallo, he omitido muchos detalles, que yo creia sin importancia..... justo ahí era donde está el fallo. La SubVentana tiene un Preview de QReports, en lugar de un ShowModal, hacia un Preview del QReports. (eso para ustedes lo cambia todo, yo pensaba que era igual que un showmodal :o ) Si mostraba varias Subventanas (desde distintas opciones del programa) el código se queda paralizado, pero despues no lo retoma en el mismo orden donde lo dejó, ya que el usuario puede, por ejemplo, cerrar la ventana donde "debía" de continuar la ejecución normal del prograrma, y eso era lo que provocaba los Access Violation. Por otra parte, el AOwner de las ventanas tampoco estaban bien puestos. Al final he optado por usar un PreviewModeless, (tampoco sabía que existía) así cada Form1 o Form2 continua su ejecución despues de lanzar la Subventana. Muchisimas gracias por vuestro tiempo e interés. |
La franja horaria es GMT +2. Ahora son las 08:15:07. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi