|
1. 헤더에 TListBox** pListBox;를 선언해둡니다.
2. 필요한 경우에서
int nSize = Edit1->Text.ToInt();
pListBox = (TListBox**)new TListBox*[nSize];
for(int i = 0 ; i < nSize ; i++)
{
String str;
str.sprintf("List%d",i);
pListBox[i] = new TListBox(this);
pListBox[i]->Parent = this->Panel2;
pListBox[i]->Name = str.c_str();
pListBox[i]->Top = i*35;
pListBox[i]->Left = 10;
pListBox[i]->Height = 30;
}
이런 식으로 생성시킵니다.
3. 부를 때는
pListBox[3]->Items->Add("BB");
이런 식으로 pListBox[Index]로 부릅니다.
=_=;;; 그나마 낳아보여요;
2HB 님이 쓰신 글 :
: static_cast<TListBox*>(Panel2->FindChildControl("List0"))->Items->Add("aaa");
: 이런 식으로 접근할수 있습니다.
: 그리고 해당 ListBox에 이벤트를 작성해야 하실 경우에는
: void __fastcall TForm1::ListBox0MouseDown(TObject *Sender, TMouseButton Button,
: TShiftState Shift, int X, int Y)
: {
: ShowMessage("AAA");
: }
: 이런식으로 규격에 맞춰서 -_-;; 이벤트를 작성하시고 생성시키실때
:
: l->OnMouseDown = ListBox0MouseDown;
:
: 이런 식으로 사용하시면 편합니다. 사실 규격에 안맞춰도 상관없지만 똑같은 형이 아니면 안들어가기 때문에 그냥 같은 컴포넌트를 하나 만들어서 이벤트를 작성하시고 그걸 복사하신다거나 해서 연결시켜주시는게 속편합니다.(연결하기 전에 실험도 해볼수 있다는 장점이 있죠;)
:
: 잘은 모르지만 아마 컬렉션이나 그런데에다 넣고 사용할수도 있을거예요;(하지만 모르니까 패스)
:
: 초보 님이 쓰신 글 :
: : for(int i=0;i<Edit1->Text.ToInt();i++){
: :
: : String str;
: : str.sprintf("List%d",i);
: :
: :
: : TListBox *l = new TListBox(this);
: : l->Parent = this->Panel2;
: : l->Name = str.c_str(); //name
: :
: :
: : TSplitter *s = new TSplitter(this);
: : s->Parent = this->Panel2;
: : s->Align=alTop;
: : }
: :
: :
: :
: : // 위에같은 방법으로 Listbox를 9개 생성하여
: : 이름을 List0,List1 ... 이런식으로 주었습니다.
: :
: : 뒤에 List1,List2 를 계속 사용하며 값을 넣었다 뺐다 해야되며
: : 비교를 해야될것이 많습니다.
: :
: : 동적생성시 주었던 이름을 바로 호출하여 쓰니 에러가 납니다.
: :
: : List1->Items->Add("1");
: : List2->Items->Add("2");
: :
: : 이런식으로요....
: :
: : 동적생성한 컨트롤은 폼위에 드래그로 올린것 처럼 쓸수 없나요?
: : 이름을 구해올 방법이 없는건지요?
: :
: : 반드시 동적생성을 사용해야될 상황입니다.
: : 상황에 따라 listbox 개수가 다르거든요...
: :
: : 빠른 답변좀 부탁드립니다...ㅠㅠ
|