Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-02-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 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
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:33:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi