네 장성호님 말씀처럼 코딩해주셔야 합니다.
조금 부연설명을 드리자면 디자인 타임에서 컨트롤을 올리면 그에 해당하는 코드들이 자동으로 생성됩니다. 즉,
: ChkBox[i]=new TCheckBox(this);
: ChkBox[i]->Parent=this;//또는 Panel1 등 특정 Control
: ChkBox[i]->Left = 10;
: ChkBox[i]->Top= 5+i*20;
: ChkBox[i]->Caption=IntToStr(i);//원하는 내용..
: ....
이 내용들이 자동 생성되죠.
하지만 런타임시 동적으로 생성하려면 위 자동생성 작업을 직접 해주어야해요.
헤더에 선언한다는 것은 말그대로 선언일 뿐입니다. new를 사용하여 실제 객체를 생성하고
컨트롤의 위치와 캡션등등 프로퍼티들을 설정해주어야 실제로 폼에 나타나는 거죠~
장성호 님이 쓰신 글 :
: Design-time에서는 Form위에 올려진 Component를 배열로 선언해서 사용할수는 없습니다.
:
: 하지만 run-time에 동적으로 CheckBox를 생성하고..
: 배치한다면 얼마든지 할수 있죠
:
: 그냥 Header에 TCheckBox *ChkBox[200]; //이렇게 선언하시구요
:
: FormCreate이벤트에서
:
: for(int i=0;i<200;i++)
: {
: ChkBox[i]=new TCheckBox(this);
: ChkBox[i]->Parent=this;//또는 Panel1 등 특정 Control
: ChkBox[i]->Left = 10;
: ChkBox[i]->Top= 5+i*20;
: ChkBox[i]->Caption=IntToStr(i);//원하는 내용..
: ....
:
: }
:
:
: 위와같은 식으로 동적생성하셔서 특정 Control 위에 올리시고 위치도 조정하시면 됩니다.
:
: 그럼..
:
:
: 김봉재 님이 쓰신 글 :
: :
: :
: : 빌더로 폼에 약 200개의 체크버튼을 놓을려고 하는데요...
: : 하나 하나씩 컨트롤을 놓는것 말고, 배열로 처리하여 프로그램 실행때 자동으로 배열되도록 하고 싶은데..
: : 어떻게 하나요???
: : 폼에 컨트롤을 배치하지 않고,
: : 그냥 헤더에 아래와 같이 지정해서 사용할수 없나요???
: :
: : TButton *Button[200]; 이렇게 하니까 않되네요...
: :
: : 초보라....
|