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.