Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   borrar o liberar componente TBITBTN en tiempo de ejecucion (https://www.clubdelphi.com/foros/showthread.php?t=58397)

Lupita 18-07-2008 21:25:49

borrar o liberar componente TBITBTN en tiempo de ejecucion
 
Hola estube checando los temas relacionados pero no me han servido o talvez algotengo mal, miren yo creo un determinado numero de botones asi

for i:=0 to slCampos.Count-1 do
begin
Boton := TBITBTN.Create(Self);
Boton.Parent := ScrollBox1;//Asignamos como padre al ScrollBox
if b=4 then
begin
aTop := aTop+ Boton.height;
b:=0;
aLeft := 10;
Boton.Left := aLeft;
inc(aLeft,Boton.Width+40);
end else
begin
Boton.Left := aLeft;
inc(aLeft,Boton.Width+40);
end;
Boton.Top := aTop;

b:=b+1;
Boton.Width := 110;
If slestado[i]='0'then
begin
Boton.Kind:= bkOK;
end else
If slestado[i]='3'then
Boton.Kind:= bkNo
else
If slestado[i]='1'then
Boton.Kind:= bkIgnore;
Boton.Name := 'Hab'+slCampos[i];
Boton.Caption := slnombres[i];
Boton.OnClick := ClickBotones;
end;

esos me los crea apretendo un boton fuera del ScrollBox1 entonces hago un proceso activando el boton en el evento onclick, entonces quiero que al terminar ese proceso me borre o me libere los botones porque la cantidad de botones creados depende de una variable que se actualiza en este evento. puse este codigo
la cantidad de botones creados es 12 entonces cuando empieza a liberar en el x=6 marca error
dice"List indexout of bounds(6)"
for x := 0 to ScrollBox1.ControlCount -1 do
begin
if ScrollBox1.Controls[x] is TBITBTN then
TBITBTN(ScrollBox1.Controls[x]).Free;
end;

egostar 18-07-2008 21:49:20

Y si lo haces al contrario?

Código Delphi [-]
for x := ScrollBox1.ControlCount -1 downto 0 do begin
    if ScrollBox1.Controls[x] is TBITBTN then
       TBITBTN(ScrollBox1.Controls[x]).Free;
end;

Salud OS

Lupita 18-07-2008 21:57:00

Perfecto
 
egostar
gracias si me funciono!!

egostar 18-07-2008 22:23:45

Cita:

Empezado por Lupita (Mensaje 301476)
egostar
gracias si me funciono!!

Que bien, el problema que tenias es porque al borrar un componente se decrementa el indice, por lo que al querer borrar el número 6, pues este ya no existe.

Salud OS

Caro 19-07-2008 00:11:44

Nose porque se me parece un pco conocido el codigo :rolleyes:, solo quería decir que si trataba de este hilo http://www.clubdelphi.com/foros/showthread.php?t=58110, ahí mismo estaba la respuesta.

Saluditos


La franja horaria es GMT +2. Ahora son las 09:14:26.

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