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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-05-2005
Avatar de Maga84
Maga84 Maga84 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Madrid
Posts: 36
Poder: 0
Maga84 Va por buen camino
Question componentes en tiempo de ejecución

Hola!!!
una pregunta...
mirad, creo en tiempo de ejecución creo unos componentes dentro de una ventana en mi aplicación. Al cerrar y volver a abrir la ventana me da error porq me dice q los componentes ya estan creados.
Como se hace para destruirlos(o algo así) cada vez que se cierre la ventana(o antes de crearlos)?
Yo los creo así:
p[i]:=Tpanel.Create(self);
...
p[i].ParentWindow:=Ppal.Handle;
...
bueno...espero haberme explicado
Gracias.
Un saludo
Responder Con Cita
  #2  
Antiguo 07-05-2005
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Tienes q destruir la form tb; FreeAndNil(form1)
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #3  
Antiguo 07-05-2005
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
lo que sucede es que si trabajas con formularios normales, eso quiere decir que no se destruyen al cerrarse tendrias que destruirlos tu, si colocas el owner de los componentes como self eso quiere que el formulario se encarga de destruirlos antes de destruirse el, la solucion que se me ocurre es la siguiente:

Mostrar el formulario tipo modal y destruirlo despues de la ejecución:

Código Delphi [-]
if not Assigned(MiForm) then MiForm := MiForm.Create(nil);
try
   miform.Showmodal;
finally
   FreeanNil(MiForm);
end;

Destruir los componentes en el evnto onClose del formulario
Código Delphi [-]
while MiForm.ControlCount > 0 do
begin
   FreeandNil(MiForm.Controls[0]);
end;

Suerte espero te sirva
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #4  
Antiguo 08-05-2005
Avatar de Maga84
Maga84 Maga84 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Madrid
Posts: 36
Poder: 0
Maga84 Va por buen camino
Thumbs up Gracias

probaré a ver que tal
Responder Con Cita
  #5  
Antiguo 08-05-2005
Avatar de Maga84
Maga84 Maga84 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Madrid
Posts: 36
Poder: 0
Maga84 Va por buen camino
Unhappy no funciona

no se que es eso del modo modal ,pero bueno

FreeandNil(MiForm.Controls[0]);<---esto me da error
y freeAndNil(Fcentral); lo he puesto pero sigue sin funcionar

no sé...seguiré intentando
un saludo
Responder Con Cita
  #6  
Antiguo 08-05-2005
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Cita:
Empezado por Maga84
no se que es eso del modo modal ,pero bueno
Se dice que un formulario es modal cuando la ejecución de tu programa se detiene por completo hasta que se ejecute una accion sobre ese formulario.

Cita:
Empezado por Maga84
FreeandNil(MiForm.Controls[0]);<---esto me da error
Y el error es???

Cita:
Empezado por Maga84
freeAndNil(Fcentral); lo he puesto pero sigue sin funcionar
Y donde lo pusistes, seguro que fue en el llamado al formulario y tu formulario lo mostrastes MODAL??
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #7  
Antiguo 08-05-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Pues no entiendo yo esto....

Si al crear los controles le dices que el owner es el Form, la ventana se engargaría de destruirlo no??

Creo que lo único que habría que hacer en el onClose, además de poner action := CaFree, sería poner a nil la matriz de controles p

La matriz p está situada en la misma ventana o en otra distinta¿?


Tampoco entiendo por qué usas Parentwindow, ¿no se debería usar simplemente la propiedad Parent?

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta



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 18:24:14.


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