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
[24017] Re:[재질문]동적생성..
임문환 [mhlim] 938 읽음    2003-02-03 16:33
일단 TEdit 동적 생성은 24010 답변을 참조하시고.

#define MAX_EDIT_COUNT 20
폼클래스 변수 또는 전역변수로
int EditCount; //프로그램 시작 시 0으로 초기화 해야 함.
TEdit *Edits[MAX_EDIT_COUNT];
로 되어 있는 상태에서

24010 답변의 매서드가 아래와 같은 것이라고 가정합니다.
TEdit *MakeEdit()
{
TEdit *edit1=new TEdit(this);
.
.
.
//이 매서드 내에서 폼에서의 해당 Edit의 위치를 조정해야 함(EditCount 변수를 사용하면 됨)
return edit1;
}

폼 크기 변경 이밴트는 OnResize이고 이밴트 핸들러는 아래와 같습니다.
void __fastcall TForm1::FormResize(TObject *Sender)
{

}

이 매서드 안에 코딩을 하시면 됩니다.
그러면 그 코딩 내용이 무엇인지 지금부터 말씀드리겠습니다.

if(Height/25 < EditCount){
   for(int desired=Height/25 ; EditCount>=desired && EditCount>0 ;EditCount--){
     delete Edits[EditCount-1];
   }
}else if(Height/25 >= EditCount+1){
   for(int desired=Height/25 ;EditCount<=desired && EditCount<MAX_EDIT_COUNT ;EditCount++){
      Edits[EditCount] = MakeEdit();
   }
}
위 코드에서 for 루프의 시작점과 끝점에 1의 오차가 있을 수 있으니 그 건 경험적으로 조정하시면 됩니다.


마지막으로,
TEdit 생성 시 소유자를 NULL로 지정한 경우 메인 폼의 OnDestroy 이밴트 핸들러에서 아래와 같이 생성한 TEdit들을 delete해야 합니다.
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
for(int i=0 ;i<EditCount ;i++){
  if(Edits[i]) delete Edits[i];
}
//EditCount=0;
}


지나가는 님이 쓰신 글 :
: 네..제가 너무 엉성하게 질문드린거 같습니다.
:
: 제가 edit box로 글자를 출력하는걸 만들었습니다..
:
: edit box 박스는 10개 정도로 메모리의 주소값을 읽어옵니다.
:
: 그런데..윈도우의 크기를 변경함에 따라..
:
: edit box 가 10 이상 늘어나거나 10개 이하로 더 줄어드는 겁니다..
: edit box의 height가 25 정도이니 폼의 Height 180라고 한다면
:
:   int n = Form1->Height - 180;
:   m_nNum  = n /25;
:
:   if(m_nNum > 0)
:   {
:     TEdit* pEdit[m_nNum];
:   }
:
: 라고 하여 m_nNum 만큼만 생성하면 될거 같은데..
: TEdit* pEdit[m_nNum]의 형태로 동적으로 생성되지 않네..여..
: 어떻게 동적으로 생성하고 제거 할지 잘 모르겠습니다..
:
:

+ -

관련 글 리스트
24012 [재질문]동적생성.. 지나가는 697 2003/02/03
24017     Re:[재질문]동적생성.. 임문환 938 2003/02/03
24026         Re:Re:[재질문]동적생성..<==와~! 답변 짱입니다.. 머슴.한석복 914 2003/02/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.