读书人

如何擦除控件中的控件

发布时间: 2012-03-29 12:53:12 作者: rapoo

怎么擦除控件中的控件。
描述:我在一个控件(tbsskinscrollbox)上画过一些控件,第二次想重新在上面画上一些控件,画新的控件前如何擦除已有的控件。

生成控件, 显示在bsskinscrollbox1上
var
Boxi:Tbsskinspeedbutton;
begin
for i:=1 to 100 do
begin
boxi:=tbsskinspeedbutton.Create(self);
boxi.caption= '第 '+inttostr(i)+ '个按钮 ';
boxi.width:=80;
boxi.heigth:=45;
boxi.Parent:=bsskinscrollbox1;
boxi.top:= ;
boxi.left:= ;
boxi.onclick:=speedbuttonclick //speedbuttonclick 是自定义的事件
end;
end;
第二次生成,先擦除,再显示在bsskinscrollbox1上。
用下面的擦除方法会报错。
for i:=1 to bsskinscrollbox1.ControlCount do
bsskinscrollbox1.Controls[i].Destroy;
我跟踪了一下,他是跳一个擦一个,所以擦到一半后再去擦下一个时,实际已经到尾部,但是循环只到一半,所以会在擦除时找不到控件。
请问正确的方法该怎么擦除。

[解决办法]
for i:=1 to bsskinscrollbox1.ControlCount do

i是不是应该从0开始啊

你这样试试
for i:=bsskinscrollbox1.ControlCount -1 downto 0 do
bsskinscrollbox1.Controls[i].Destroy;
[解决办法]
试试这样
for i:=0 to bsskinscrollbox1.ControlCount-1 do
begin
bsskinscrollbox1.Controls[0].Destroy;
end;
[解决办法]
这个也错的吗?
for i:=bsskinscrollbox1.ControlCount -1 downto 0 do
bsskinscrollbox1.Controls[i].Destroy;

读书人网 >.NET

热点推荐