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
[5707] Re:[질문~] MDI Child폼에 있는 ListView1 컨트롤 제어??
박지훈.임프 [cbuilder] 2749 읽음    2001-02-24 17:57
최주영 님이 쓰신 글 :
:
: 안녕하세요
:
: MDI child 폼이 현재 MDIFORM 에 보여지고 있습니다.
:
: 보여지는 Child 에서는 listview1 과 버튼1이 놓여져 있는데요
: 버튼 1을 눌렀을때 동적으로 생성된 모달폼이 생성됩니다....
:
: 그 생성된 모달폼에서 MDI child 폼에 놓여진 ListView1->Items->Clear(); 함수를
: 사용하려는데 메모리 Access 에러가 발생합니다...
:
: 차일드 폼의 ListView 컨트롤의 속성들을 모달폼에서 사용하는 방법좀 알려주세요
:


임펠리테리입니다.

아마도, 모달폼에서 차일드폼을 지정하는 데서 유효하지 않은 포인터를 사용하셨을 겁니다. 무슨 말이냐 하면...
MDI차일드 폼의 경우 항상 동적으로 생성되기 때문에, 빌더에서 New Form을 선택해서 만들어진 새 폼의 포인터는 항상 실제 폼이 생성되지 않습니다. 이 "가짜" 폼 포인터를 억세스했다면, 여기에는 폼 객체가 할당되어 있지 않기 때문에 억세스바이얼레이션이 생기는 것이 당연합니다.

문제를 해결하려면, 당연히, 실제로 폼 객체가 만들어진 포인터를 억세스해야 합니다. 예를 들어, 현재 액티브한 MDI 차일드폼의 리스트뷰를 참조하려면, 메인폼의 ActiveMDIChild 프로퍼티에 항상 액티브한 차일드폼의 객체가 유지되므로 이걸 억세스하면 됩니다. 한가지 주의할 점은, 이 경우, ActiveMDIChild 프로퍼티는 TForm 형이므로 멤버중에 리스트뷰가 없습니다. 그러므로 차일드 폼 형으로 캐스팅을 해준 후 리스트뷰 멤버를 억세스해야 합니다.

그럼 참고하시길...

+ -

관련 글 리스트
5690 [질문~] MDI Child폼에 있는 ListView1 컨트롤 제어?? 최주영 2454 2001/02/23
5707     Re:[질문~] MDI Child폼에 있는 ListView1 컨트롤 제어?? 박지훈.임프 2749 2001/02/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.