Ver Mensaje Individual
  #1  
Antiguo 17-02-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 28
Lepe Va por buen camino
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:
-----------------
SubVentana : TSubVentana // hereda de Tform

procedure Tsubventana.FormClose(....)
begin
  Action := caFree;
end;
-----------------

type Form1 = Class(TForm)
...
private 
 Form1_Sub:TsubVentana; // para comunicarme con la SubVentana
end;

Implementation

procedure Tform1.ToolButton1Click(...);
begin
try
  ToolButton1.Enabled := false; 
  Form1_Sub := TSubVentana.Create(application);
  ...
  Form1_Sub.ShowModal;
finally
  Toolbutton1.Enabled:= true;
  Form1_Sub:=nil;
end;
end; // ToolbuttonClick
-----------------

type Form2 = Class(TForm)
...
private 
 Form2_Sub:TsubVentana; // para comunicarme con la SubVentana
end;

Implementation

procedure Tform2.ToolButton2Click(...);
begin
try
  ToolButton2.Enabled := false; 
  Form2_Sub := TSubVentana.Create(application);
  ...
  Form2_Sub.ShowModal;
finally
  Toolbutton1.Enabled:= true;
  Form2_Sub:=nil;  
end;
end; // ToolbuttonClick
¿Al hacer la asignación FormX_Sub:=nil; estoy dejando basura en la memoria o no?

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.
Responder Con Cita