FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
__________________
Guía de Estilo de los Foros Cita:
|
#3
|
|||
|
|||
Cita:
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. |
#4
|
||||
|
||||
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; 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. |
#5
|
|||
|
|||
Cita:
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. |
#6
|
||||
|
||||
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í:
__________________
"La recompensa de una buena acción está en haberla hecho" |
#7
|
||||
|
||||
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 Código:
if TSpeedButton(Components[i]).Parent = Panel1 then 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; Código:
BorrarBtns(Panel1); BorrarBtns(GroupBox1); ...
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#8
|
|||
|
|||
Soys unos Crack's muchas gracias a todos.
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|
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 |
|