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
[50641] Re:[질문] TLabel 동적 생성 관련..
장성호 [nasilso] 2426 읽음    2007-09-22 01:10
포인터-포인터 를 써서 동적으로 그 수를 마음대로 조정하여 
객체를 생성하고 해제하고 할수 있습니다.

그러나 별로 권해드리고 싶지는 않습니다.
왜냐하면 잘못사용하면 메모리 누수가 나기 쉽기때문입니다.

객체 관리를 위해서는 TList같은 링크드-리스트 class를 이용하시길 권합니다.


--------------  샘플1 ------------------

TLabel **lbl=NULL;
int iLblCnt=0;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    if(iLblCnt>0)return;

    iLblCnt=StrToInt(Edit1->Text);
    lbl=(TLabel **)malloc(4*iLblCnt);
    for( int i=0;i<iLblCnt;i++)
    {
        lbl[i]=new TLabel(this);
        lbl[i]->Caption=IntToStr(i);
        lbl[i]->Left=i*15;
        lbl[i]->Top=i*8;
        lbl[i]->Parent=this;
    }

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    for( int i=0;i<iLblCnt;i++)
    {
        delete lbl[i];
    }
    delete lbl;
    lbl=NULL;
    iLblCnt=0;
}


-------------- 샘플2------------------

TList *LblList=NULL;
void __fastcall TForm1::Button3Click(TObject *Sender)
{
    if(LblList==NULL)LblList=new TList;


     int iCnt=StrToInt(Edit1->Text);

    for( int i=0;i<iCnt;i++)
    {
        TLabel *l=new TLabel(this);
        l->Caption=IntToStr(i);
        l->Left=i*15;
        l->Top=i*8;
        l->Parent=this;
        LblList->Add(l);
    }

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
    if(LblList==NULL)return;
    for( int i=0;i<LblList->Count;i++)
    {
        TLabel *l=(TLabel *)LblList->Items[i];
        delete l;
    }
    LblList->Clear();
    delete LblList;
    LblList=NULL;
}

List class는 TList외에 허정주님이 얘기한  TObjectList도 있구
템플릿으로 만들어진 것도 있구.. 여러가지가 있습니다.

그럼..


초보빌더 님이 쓰신 글 :
: 폼을 로드시마다 TLabel 을 동적배열로 생성해서 사용할려고하는데요.
: 만약
: TLabel* lbImsi[20];   <-- 이런식으로 선언후 사용하는법은 알겠는데..
:
: 배열수를 동적으로 할당하는 방법을 모르겠네요 .;;
:
: 할당과 해제 방법이 궁금합니다.
:
: 여기저기 찾아봐도 정보가 없어서 글을올립니다..
:
: 부탁드릴께요 ;;
:
: - 만약 가능하지 않다면... 가능한 컴포넌트가 따로있는지도 궁금하네요.

+ -

관련 글 리스트
50637 [질문] TLabel 동적 생성 관련.. 초보빌더 1949 2007/09/21
50641     Re:[질문] TLabel 동적 생성 관련.. 장성호 2426 2007/09/22
50639     Re:[질문] TLabel 동적 생성 관련.. 아루스 2138 2007/09/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.