C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[38953] Re:Re:그나마 낳은 방법;;
2HB [thigon] 1097 읽음    2005-01-28 10:22
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 개수가 다르거든요...
: :
: : 빠른 답변좀 부탁드립니다...ㅠㅠ

+ -

관련 글 리스트
38950 [급질문] 동적생성한 컨트롤의 이름을 구해오는 방법에 대한 질문입니다... 초보 880 2005/01/28
38952     Re:[급질문] 동적생성한 컨트롤의 이름을 구해오는 방법에 대한 질문입니다... 2HB 1089 2005/01/28
38953         Re:Re:그나마 낳은 방법;; 2HB 1097 2005/01/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.