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. |
|
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. |
Hola Liante.
Para borrar los componentes podés usar utilizar la propiedad Components del form: Código:
procedure BorrarSpeedBtns; 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. |
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. |
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í:
|
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); Código:
BorrarBtns(Panel1); |
Soys unos Crack's muchas gracias a todos.
|
La franja horaria es GMT +2. Ahora son las 02:04:35. |
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