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
[41331] Re:동적생성된 버튼을 지우려면????
유영인 Cuperido [cuperido] 1095 읽음    2005-08-05 10:20
OnClick 이벤트 자체 내에서 이벤트가 발생한 객체를 지우는 것은 메모리 참조 에러를
일으킬 소지가 다분합니다. :(

OnClick 한번을 쓰기 위해서라면, 그냥 myFunc(NULL); 이런식으로 호출 한번만으로
가능합니다. 다만, 이벤트가 한번 발동을 한 뒤 지우고 싶다. 이런식이시라면,
별도의 처리 부분을 두어 삭제를 해야할것 같습니다.

그리고 객체 동적 생성시에는 이름을 정해 주셔야, 그 해당 함수 밖으로 나와도
객체를 찾을 수 있습니다.

아래 예제는 myButton을 생성하고 끝날때 자동으로 찾아서 해제하는 예제입니다.

: 지금도 많은 변수들을 전역변수로 쓰면서 생성했다가 지우고 있는데
: 이렇게 해야 되나요???
: --> 이런방법은 동적 생성 의미가 없는거 같은데;;;;;;

이 질문은 무슨 의미인지 잘 모르겠습니다. ^^

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{

TButton *myButton;
myButton = new TButton(this);
myButton->Parent = Form1;

// 차후 객체를 찾기 위하여 이름을 설정합니다
myButton->Name = "MyNewButton";
myButton->OnClick = Button1Click;        // <-- 이곳에서 버튼을 지우고 싶습니다.

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{

Form1->OnResize;                // 어떤 특정한 것을 확대했대가 다시 돌아가려 합니다...

}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormDestroy(TObject *Sender)
{

TButton *myButton = NULL;

if(Form1->FindComponent("MyNewButton"))
   myButton = dynamic_cast<TButton *>(Form1->FindComponent("MyNewButton"));

if(myButton)
   delete myButton;

}
//---------------------------------------------------------------------------



너브 님이 쓰신 글 :
: 안녕하세요... 항상 이곳에서 많은 도움을 받고 있습니다....
: 아래와 같이 버튼을 동적으로 생성 했는데.. 한번 사용한 후에 지우고 싶은데 어떡게 해야 되나요??
:
: TButton *myButton;
: myButton = new TButton(this);
: myButton->Parent = Form1;
: myButton->OnClick = myFunc;        // <-- 이곳에서 버튼을 지우고 싶습니다.
: //---------------------------
:
: void __fastcall TForm1::myFunc(TObject *Sender){
:
:         Fomr1->OnResize;                // 어떤 특정한 것을 확대했대가 다시 돌아가려 합니다...
:
:        // 이곳에서 동적생성한 부분을 지우고 싶습니다......?????
: }
: //-----------------------------------------------------------------
:
: 처음에는 위에 있는 부분에 delete 를 써 봤는데...
: OnClick 이벤트가 일어나기 전에 버튼이 지워져 버리네요(ㅜ.ㅜ)
: OnClick 이벤트 한번쓰면서 지우고 싶은데... 도와주세요??
:
: 지금도 많은 변수들을 전역변수로 쓰면서 생성했다가 지우고 있는데
: 이렇게 해야 되나요???
: --> 이런방법은 동적 생성 의미가 없는거 같은데;;;;;;

+ -

관련 글 리스트
41329 동적생성된 버튼을 지우려면???? 너브 825 2005/08/05
41331     Re:동적생성된 버튼을 지우려면???? 유영인 Cuperido 1095 2005/08/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.