Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-07-2010
LiAnTe- LiAnTe- is offline
Miembro
 
Registrado: oct 2007
Posts: 47
Poder: 0
LiAnTe- Va por buen camino
Borrar Botones

Hol Gente,

tengo una duda que no se como solventarla...

he creado TSpeedButton en un panel en modo ejecucion.

La pregunta es la siguiente como puedo eliminar los botones que he creado??

Estoy buscando y mirando y no lo consigo si alguna alma caritativa me ayudara se lo agradeceria.

Saludos.
Responder Con Cita
  #2  
Antiguo 23-07-2010
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Un ejemplo:

Código Delphi [-]
FreeAndNil(button1);

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 23-07-2010
LiAnTe- LiAnTe- is offline
Miembro
 
Registrado: oct 2007
Posts: 47
Poder: 0
LiAnTe- Va por buen camino
Cita:
Empezado por marcoszorrilla Ver Mensaje
Un ejemplo:


Código Delphi [-]FreeAndNil(button1);



Un Saludo.
Hola compañero eso no me vale...

if BDades.TGrupo.Eof = False Then
Begin
vProductoGrupoNombre := BDades.TGrupo.FieldByName('DESCRIPCION').AsString;
vProductoGrupoCodigo := BDades.TGrupo.FieldByName('GRUPO').AsString;
vBotonProductos := TSpeedButton.create(self);
vBotonProductos.Parent := vPestanyaProductos;
vBotonProductos.Tag := StrToInt(vProductoGrupoCodigo);
vBotonProductos.Caption := vProductoGrupoNombre;
vBotonProductos.Layout := blGlyphTop;
vBotonProductos.Transparent := True;
try

Como puedes ver los voy creando en un panel en tiempo de ejecucion igual hay 20 botones...

el tema seria dejar en blanco el panel pero no se como hacerlo y mira que le estoy dando vueltas y vueltas... esta claro que mi nivel en delphi no es muy alto....

Saludos.
Responder Con Cita
  #4  
Antiguo 24-07-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Liante.
Para borrar los componentes podés usar utilizar la propiedad Components del form:
Código:
procedure BorrarSpeedBtns;
var
  i: Integer;
begin
   for i:= ComponentCount -1 downto 0 do
     if Components[i].ClassType = TSpeedButton then
       Components[i].Free;
end;
No, no hice el conteo al revés por que me guste complicar la cosa.
Si hiciera, for i:= 0 to ComponentCount - 1 do, obtendría un error de índice; puesto que
la posición del elemento que acabo de borrar sería ocupada inmediatamente por la del
componente que lo sucede.
Esto hace que cuando el componente "1" sea borrado y vaya a borrar el "2" este esté en
el lugar que antes ocupaba el "1", borrando entonces el "3" , y así sucesivamente. Provocando
inevitablemente una incongruencia entre el índice del ciclo y el número de los componentes.

Espero haber ayudado.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 24-07-2010 a las 07:29:24.
Responder Con Cita
  #5  
Antiguo 24-07-2010
LiAnTe- LiAnTe- is offline
Miembro
 
Registrado: oct 2007
Posts: 47
Poder: 0
LiAnTe- Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola Liante.
Para borrar los componentes podés usar utilizar la propiedad Components del form:
Código:
procedure BorrarSpeedBtns;
var
  i: Integer;
begin
   for i:= ComponentCount -1 downto 0 do
     if Components[i].ClassType = TSpeedButton then
       Components[i].Free;
end;
No, no hice el conteo al revés por que me guste complicar la cosa.
Si hiciera, for i:= 0 to ComponentCount - 1 do, obtendría un error de índice; puesto que
la posición del elemento que acabo de borrar sería ocupada inmediatamente por la del
componente que lo sucede.
Esto hace que cuando el componente "1" sea borrado y vaya a borrar el "2" este esté en
el lugar que antes ocupaba el "1", borrando entonces el "3" , y así sucesivamente. Provocando
inevitablemente una incongruencia entre el índice del ciclo y el número de los componentes.

Espero haber ayudado.

Saludos.
Genial esa es la idea, eso me va perfecto pero el ultimo problema que tengo ahora es que me borra todo el formulario y me tiene que borrar los botones que hay solo dentro de un PANEL...

estoy mirando de hacerlo metiendo delante el nombre del panel y pasa de mi...

donde me estoy equivocando??

gracias compañeros por el aporte que estais haciendo.
Responder Con Cita
  #6  
Antiguo 24-07-2010
Avatar de DarkMan
DarkMan DarkMan is offline
Miembro
 
Registrado: jul 2006
Posts: 102
Poder: 18
DarkMan Va por buen camino
Si el panel es constante y no se crea y se destruye, sabiendo su nombre desde el principio puedes eliminar todos los botones de ese tipo que contenga.

Modificando un poco la función quedaría algo así:

Código Delphi [-]
procedure BorrarSpeedBtns(Panel: TPanel);
var
  i: Integer;
begin

   for i:= ComponentCount -1 downto 0 do
     if Components[i].ClassType = TSpeedButton then
       If Components[i].Parent = Panel then Components[i].Free;

end;
__________________
"La recompensa de una buena acción está en haberla hecho"
Responder Con Cita
  #7  
Antiguo 24-07-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.

La idea de DarkMan está bíen orientada.
Pero [i]Components nos da un TComponent y no tiene la propiedad Parent,
o sea que tendríamos que ir a un descendiente que la tenga. Este es TWinControl.

Entonces la línea:
Código:
   If Components[i].Parent = Panel then
debería ser:
Código:
   if TSpeedButton(Components[i]).Parent = Panel1  then
Parametrizando para cualquier contenedor sería:
Código:
procedure TForm1.BorrarBtns(ACtrl: TWinControl);
var
  i: Integer;
begin
  for i:= ComponentCount -1 downto 0 do
    if (Components[i].ClassType = TSpeedButton)and
      (TSpeedButton(Components[i]).Parent = ACtrl) then
       Components[i].Free;
end;
Llamadas:
Código:
  BorrarBtns(Panel1);
  BorrarBtns(GroupBox1);
  ...
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 30-07-2010
LiAnTe- LiAnTe- is offline
Miembro
 
Registrado: oct 2007
Posts: 47
Poder: 0
LiAnTe- Va por buen camino
Soys unos Crack's muchas gracias a todos.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
borrar, cerrar botones PHP arespremium PHP 3 04-08-2007 18:34:29
Botones Cañones Varios 6 19-07-2007 16:59:41
Borrar lineas detalle al borrar registro maestro akinom38 Conexión con bases de datos 3 11-01-2006 10:38:07
borrar los campos de un DBGrid sin borrar los titulos de las columnas Torreblanca OOP 2 02-08-2005 00:12:52
Botones en vcl gontxalo OOP 2 28-05-2005 10:38:16


La franja horaria es GMT +2. Ahora son las 15:47:24.


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