동적으로 생성을 하면 디자인 하기가 좀 애매해서 몇번 실행을 해가면서 자리도 맞춰야 되고
해서 번거로운 점이 많습니다.
그래서, 저 같은 경우에 먼저 해당 폼 클래스의 public영역에
TCheckBox * pCheckBox[100];와 같이 선언을 하고,
Form의 Create Method에서
pCheckBox[0] = FindComponent( ~~~ );
이런식으로 할당을 해서 씁니다.
물론 이름을 할당할 때 규칙을 정해서 하면 할당할때
코딩으로 쉽게 할당할 수 있습니다.
김봉재 님이 쓰신 글 :
: 네 감사합니다.
: 잘 쓰고 있습니다.....
: C Builder에 대한 자료가 국내에는 너무 없는듯...
:
: 지금 시작 님이 쓰신 글 :
: : 네 장성호님 말씀처럼 코딩해주셔야 합니다.
: : 조금 부연설명을 드리자면 디자인 타임에서 컨트롤을 올리면 그에 해당하는 코드들이 자동으로 생성됩니다. 즉,
: : : 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]; 이렇게 하니까 않되네요...
: : : :
: : : : 초보라....