|
포인터-포인터 를 써서 동적으로 그 수를 마음대로 조정하여
객체를 생성하고 해제하고 할수 있습니다.
그러나 별로 권해드리고 싶지는 않습니다.
왜냐하면 잘못사용하면 메모리 누수가 나기 쉽기때문입니다.
객체 관리를 위해서는 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]; <-- 이런식으로 선언후 사용하는법은 알겠는데..
:
: 배열수를 동적으로 할당하는 방법을 모르겠네요 .;;
:
: 할당과 해제 방법이 궁금합니다.
:
: 여기저기 찾아봐도 정보가 없어서 글을올립니다..
:
: 부탁드릴께요 ;;
:
: - 만약 가능하지 않다면... 가능한 컴포넌트가 따로있는지도 궁금하네요.
|