Q&A

  • 동적 생성한 Label을 Free시키기
컴포넌트를 동적으로 생성시키구 아래와 같이 코딩을 했습니다.



그런데 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;



2  COMMENTS
  • Profile
    권경미 2000.08.25 23:23
    .

  • Profile
    최석기 2000.08.25 22:58
    Panel에 있는 control을 뒤부터 지우시면 됩니다..



    procedure TForm1.Button1Click(Sender: TObject);

    var

    cnt : integer;

    lbl: TLabel;

    begin

    for cnt := 1 to 10 do

    begin

    lbl := tlabel.create(Panel1);



    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 := panel1.controlCount-1 downto 0 do

    if panel1.controls[cnt] is TLabel then

    panel1.controls[cnt].Free;

    end;



    권경미 wrote:

    > 컴포넌트를 동적으로 생성시키구 아래와 같이 코딩을 했습니다.

    >

    > 그런데 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;

    >