자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Firemonkey TGridPanelLayout 아이템 삭제
2021.04.01 09:38
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
안녕하세요.
현재 C++ Builder 10.3 Communication Edition을 사용해서 안드로이드 프로그램 작성 중입니다.
FMX기반에서,,
아래 소스는 TGridPanelLayout 객체 생성 후에 각 컬럼에 동적으로 TMyFrameOrd2 객체 생성해서 추가하는 코드입니다.
====================================================
for(int ix = 0; ix < item_cnt; ix++){
pTemp = new TMyFrameOrd2(NULL);
pTemp->Parent = this->gpl22;
pTemp->Align = TAlignLayout::Client;
pTemp->SetSelctItemInfo(m_SelItemsList[ix]);
// register a event handler
pTemp->OnBtnOk = PayItemEventHandler;
// 화면 표시
pTemp->UpdateOrdWidget();
// add to GridPanel
this->gpl22->ControlCollection->AddControl(pTemp);
}
=====================================================
문제는 TGridPanelLayout 객체인 gpl22를 삭제 시,
1) this->gpl22->ControlCollection->Clear(); 를 실행 ==> TMyFrameOrd2 객체의 소멸자는 호출
2) gpl22->RemoveControl(index) 이런 식으로 하나씩 삭제할 경우 ==> TMyFrameOrd2 객체 소멸자 호출 안됨
어떤 차이가 있는지요?
감사합니다.
댓글 3
Firemonkey TGridPanelLayout 아이템 삭제
2021.04.01 09:38
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
안녕하세요.
현재 C++ Builder 10.3 Communication Edition을 사용해서 안드로이드 프로그램 작성 중입니다.
FMX기반에서,,
아래 소스는 TGridPanelLayout 객체 생성 후에 각 컬럼에 동적으로 TMyFrameOrd2 객체 생성해서 추가하는 코드입니다.
====================================================
for(int ix = 0; ix < item_cnt; ix++){
pTemp = new TMyFrameOrd2(NULL);
pTemp->Parent = this->gpl22;
pTemp->Align = TAlignLayout::Client;
pTemp->SetSelctItemInfo(m_SelItemsList[ix]);
// register a event handler
pTemp->OnBtnOk = PayItemEventHandler;
// 화면 표시
pTemp->UpdateOrdWidget();
// add to GridPanel
this->gpl22->ControlCollection->AddControl(pTemp);
}
=====================================================
문제는 TGridPanelLayout 객체인 gpl22를 삭제 시,
1) this->gpl22->ControlCollection->Clear(); 를 실행 ==> TMyFrameOrd2 객체의 소멸자는 호출
2) gpl22->RemoveControl(index) 이런 식으로 하나씩 삭제할 경우 ==> TMyFrameOrd2 객체 소멸자 호출 안됨
어떤 차이가 있는지요?
감사합니다.
Clear 메소드는 ControlItem의 항목들을 다 삭제하는 메소드이고.
RemoveControl은 배열에서 지정된 컨트롤과 연결된 최신 컨트롤 항목을 제거하고,
Items 배열은 삭제 된 항목 뒤에 오는 제어 항목을 위로 이동하여 이후에 업데이트됩니다.
(Removes the latest control item associated with the specified AControl control from the Items array.
The Items array is subsequently updated by moving up any control items that come after the deleted one. )