컴포넌트를 동적으로 생성시키구 아래와 같이 코딩을 했습니다.
그런데 Free시킬때 짝수번째 라벨만 삭제가 됩니다...
ex> 1         삭제후       1
   2
   3                      3  
   4
   5                      5
   6 
   7                      7
   8
   9                      9
  10
왜 이런가요?
아래는 소스입니다...
procedure TForm1.Button1Click(Sender: TObject);
var
 cnt : integer;
begin
 for cnt := 1 to 10 do
 begin
   lbl := tlabel.create(self);
   with lbl do
   begin
     parent  := panel1;
     left    := 50;
     top     := cnt * 20 ;
     width   := 50;
     height  := 14;
     name    := 'label'+inttostr(cnt);
     caption := inttostr(cnt);
     visible := true;
   end;
 end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
 cnt : integer;
begin
 for cnt := 0 to panel1.controlCount-1 do panel1.controls[cnt].Free;
end;
			 
	
	
    
    
	
	
    
    
    
> 컴포넌트를 동적으로 생성시키구 아래와 같이 코딩을 했습니다.
>
> 그런데 Free시킬때 짝수번째 라벨만 삭제가 됩니다...
>
> ex> 1 삭제후 1
> 2
> 3 3
> 4
> 5 5
> 6
> 7 7
> 8
> 9 9
> 10
>
> 왜 이런가요?
>
> 아래는 소스입니다...
>
> procedure TForm1.Button1Click(Sender: TObject);
> var
> cnt : integer;
> begin
> for cnt := 1 to 10 do
> begin
> lbl := tlabel.create(self);
>
> with lbl do
> begin
> parent := panel1;
> left := 50;
> top := cnt * 20 ;
> width := 50;
> height := 14;
> name := 'label'+inttostr(cnt);
> caption := inttostr(cnt);
> visible := true;
> end;
> end;
> end;
>
> procedure TForm1.Button2Click(Sender: TObject);
> var
> cnt : integer;
> begin
> for cnt := 0 to panel1.controlCount-1 do panel1.controls[cnt].Free;
>
> end;
>
뒤집으면 되여...
이유는요......free시키는 순간 controlCount가 변하니까 중간에 이빨빠지는 형태가 될수 밖에요.....
for cnt := panel1.controlCount-1 downto 0 do panel1.controls[cnt].Free;