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 13-11-2005
ilichhernandez ilichhernandez is offline
Miembro
 
Registrado: oct 2005
Posts: 277
Poder: 19
ilichhernandez Va por buen camino
Question No puedo matar los componentes

Despues de 10 horas de trabajo en dia domingo.....uffffff, avanzo pero con algunas dudas..... espero que sea la ultima del dia.....
Resulta que creo varios componentes tlabel en tiempo de ejecucion , pero no puedo eliminarlos despues, he revisado 5 o 6 hilos con temas similares ( asi que disculpad las molestias) pero que no me queda claro......(tal vez sea el sueño)..... pero bueno hay que seguir...... gracias por el tiempo que dedican amigos......

Código Delphi [-]
procedure Tform_comparacion.cxButton2Click(Sender: TObject);
Var
n:Integer;
begin
  for n:=0 to Form_comparacion.ComponentCount -1  do
  begin

    if ((Components[n] is Tlabel) and ((Components[n].tag = 5)or(Components[n].Tag = 4))) then
    Tlabel(Components[n]).Free;
  end;   
form_comparacion.Close;
end;

ilich hernandez.
__________________
[Lo que a veces es tan facil, a veces parece imposible]
Responder Con Cita
  #2  
Antiguo 14-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Para qué liberarlo tu mismo?, el formulario se encargara de su destruccion. No hay necesidad de eso, a menos que ese formulario no tenga el control de estos labels.

Como sabes que estos no se liberan??, el codigo que pones es una operacion que de seguro se ejecuta muy rapido.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 14-11-2005
ilichhernandez ilichhernandez is offline
Miembro
 
Registrado: oct 2005
Posts: 277
Poder: 19
ilichhernandez Va por buen camino
Estos
labels los cargo desde otro form, cuando necesito realizar una operacion sobre este me reclama que los labels ya existen.... entonces la necesidad de eliminarlos manualmente...son label creados en tiempo de ejecucion.... y que a lo largo de la ejecucion del programa pueden necesitarse cargar nuevamente con otros datos....
__________________
[Lo que a veces es tan facil, a veces parece imposible]
Responder Con Cita
  #4  
Antiguo 14-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Pienso que la mejor solucion para esto, y no complicar mucho, es crear el label de modo que el formulario que cierras se encargue de destruirlo.
Código Delphi [-]
label1:=tlabel.Create(TForm_comparacion);
Con esto el formulario Form_comparacion se encargara de su destruccion.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #5  
Antiguo 14-11-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Puede ser que tengas problemas a la hora de eliminar controles de la lista empezando por el principio; Haz ésta pequeña modificación en el código y debería funcionar sin problemas.

Código Delphi [-]
 Var
   n:Integer;
 begin
   // Modificamos el orden del recorrido.
   for n:=(Form_comparacion.ComponentCount -1) downto 0 do begin
 
     if ((Components[n] is Tlabel) and ((Components[n].tag = 5)or(Components[n].Tag = 4))) then
       Tlabel(Components[n]).Free;
   end;
 
   // De paso pon çéste mensaje para comprobar que ya se han eliminado
   MessageDlg('Eliminados los Labels', mtWarning, [mbOK], 0);
 
   form_comparacion.Close;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 14-11-2005
ilichhernandez ilichhernandez is offline
Miembro
 
Registrado: oct 2005
Posts: 277
Poder: 19
ilichhernandez Va por buen camino
Muchas Gracias..... el codigo que has propuesto ha funcionado de las mil maravillas!!!, gracias a todos por sus ayudas !!!!

GRacias.
__________________
[Lo que a veces es tan facil, a veces parece imposible]
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 17:20:59.


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