|
제가 직접적으로 처리해 본 것이 아니어서 정혹하다고 말씀드리기가 힘들지만,
이렇게 해 보세요.
delete comps;
클래스이기때문에 기본적으로 자신이 메모리에서 해제될 때, ~TBarSeries ()라는 소멸자를 호출하여 주변정리를 하고 소멸(해제)될 것입니다.
그리고, 혹시, 이렇게 해서 완전히 소멸되지 않을 수 있습니다. 동적으로 생성한 후, 그 내부에 또다시 동적으로 생성해 준 것이 있는 경우에는 이것부터 해제를 하고 delete해 주어야 합니다. 여기서 보면 Add하는 부분이 있는데, 이와 매치되는 delete하는 함수가 존재하지 싶습니다. 이 함수로 먼저 delete한 후에 TBarSeries를 해제하면 되지 싶습니다.
"참고"하세요.
시후 님이 쓰신 글 :
: 임의 폼에서 챠트를 동적으로 생성시켰습니다..
: 그런데 폼을 종료하고 나가면서 챠트를 해제 시켜야 하는데...방법을 몰겠네염..
: 책을 봐도 생성부분은 나와있는데..해제는 없네여..
: 예를 들면 이런겁니다..
: 임의 폼에 버튼이 있고 버튼을 누르면 스트링 그리드에 있는 값을 읽어 들여서 챠트를 동적으로
생성시켜서 스트링 그리드 값을 디스플레이 시켜주져..
: 근데 버튼을 한번더 누르면 시리즈가 추가되어 챠트를 또 다시 생성시키더군여..
: 버튼을 누르면 챠트를 해제했다가 다시 불러 들여야 하는데...거참 몰겠습니다..
: 아래와 같이 했거든요..바챠트인데 항목이 추가 될때마다 다른색의 바를 만들었습니다..
:
:
: BYTE nRed = GetRValue(Color);
: BYTE nBlue = GetBValue(Color);
: BYTE nGreen = GetGValue(Color);
:
: TBarSeries *comps = new TBarSeries(this); // 챠트 생성
:
: for(int cnt = 0 ; cnt < SG1->RowCount ; cnt++) // 스트링 그리드의 로우 카운트
: {
: nRed += 10*cnt;
: nBlue -= 10*cnt;
: nGreen *= 1.15*cnt;
:
: Color = (TColor)RGB(nRed,nGreen,nBlue); // 칼라 동적 생성
: Canvas->Brush->Color = Color;
:
: comps->ParentChart = Chart1;
: comps->Add(atoi(SG1->Cells[2][cnt].c_str()),SG1->Cells[1][cnt],Color);
: }
:
: Form1->Color = clBtnFace; // 요건 폼의 칼라 속성도 영향을 받길래 강제로 돌려놓은것임
|