|
아무래도 동적할당이 여려번되기 때문인듯 합니다.
아래 코드를 보면 버튼이 눌렸을때 DBGrid가 하나 생성되고 참일경우 화면에 나타나죠...
하지만 제거해야할쯤엔 조금전에 생성된 버튼이 아닌 새로이 버튼이 하나더 생성되고
그걸 제거하는겁니다...당연히 하나의 변수로 지정은 했지만 new가 호출될때마다 계속
동적 생성이 되는것이겠구요.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
b++;
if(b<4)
{
a=new TButton(this);
a->Width=100;
a->Height=100;
a->Left=100+b*10;
a->Top=100+b*10;
a->Parent=this;
}
else
{
delete a;
}
}
이처럼 해놓은 상태에서 버튼을 누를경우 3개까지 화면에 만들어 지다가 하나만 제거되고
나머지는 제거되지 않습니다. 프로그램이 종료시에 Parent가 this이므로 this가 알아서 메모리를
제거는 하겠지만 화면에 충첩되어 나타난건 delete로는 사라지지 않겠죠...
말은 참 장황하게 했는데요...이게 아니면 어쩌죠...
^^ 님이 쓰신 글 :
: void __fastcall TServer::SpeedButton3Click(TObject *Sender)
: {
: TDBGrid *MyDBGrid = new TDBGrid(this);
: if(Server->Height == 147)
: {
: Server->Height = 294;
: MyDBGrid->Parent = this; // 생성...
: }
: else
: {
: Server->Height = 147;
: delete MyDBGrid; // 제거...
: }
: }
:
: 위 코드와 같이 작성을 했는데요..Server라는 것은 폼이름이구요...폼크기를 줄이면서..
: 줄인부분에있는 DBGrid컴포넌트를 동적생성시키고 또 줄이면서 없앨려구 했거든요..근데..
: 안사라지네요..답변 부탁드립니다.. 완전 초보라 ^^;;
|