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
[76098] 감사합니다.
라이손레종 [] 1227 읽음    2021-04-01 17:26
빌더(TWx) 님이 쓰신 글 :
: 라이손레종 님이 쓰신 글 :
: :  님이 쓰신 글 :
: : : OnCreate 이용하면 될거 겉은데요
: : :
: : : 라이손레종 님이 쓰신 글 :
: : : : 안녕하세요 ?
: : : : Q&A를 아무리 찾아도 비슷한 것 을 찾지 못했습니다.. 유사한 질문은 있었지만.. 난이도가 있는 내용이어서.. 해석을 못했습니다.
: : : :
: : : : 질문 ]
: : : : Form1이 활성화 된 후 자동으로 Form2를 띄우고 싶습니다.
: : : :
: : : : Form1::FormCreate , StratDock , FormShow ( 기능을 잘몰라 이벤트에 하나씩 테스트 해보았습니다 )
: : : : 했지만.. 에러와 .. 구현이 안됩니다..
: : : : 버튼으로 Form2->Show();를 할 땐 간단했는데..
: : : :
: : : : 바쁘시더라도.. 잠시만.. 저의 질문에 답글을 부탁드려봅니다..
: :
: : 해보았는데.. 안되었습니다.. 다시금
: : Events의 OnCreate를 더블클릭해서
: :  Form1::FormCreate(TObject *Sender) {   Form2->Show();      }
: : 해보았지만.. 컴파일시
: : Access violation at address 50C27C3F in module 'vcl250.bpl' Read of address 000003CC.
: : 쇼메시지가 나타나고 확인하면 실행은 되지만.. Form2가 Show 되지는 않았습니다.
: : Form1의 Button1에 Form2->Show();를 넣어 두었는데.. 버튼을 누르면 잘 나타납니다.
: :
: : 제생각입니다만..
: : Q&A를 살펴보면 Form1이 완전히 실행되기전에 Form2를 Show하려 해서 기능이 활성화 되지 못하는거 같은데..
: :
: : 간단할듯한데.. 안되네요..
:
:
:
:
:
: 답변:
:
:
: TForm2가 생성되기 전에 null pointer를 액세스 해서 발생하는 예외이므로
:
: Project Options -> Application -> Forms 로 들어가서...
: Auto-create forms 에 포함되어 있는 Form2 를 Available forms로 빼주고
:
: 아래와 같이 처리...
:
:
: void __fastcall TForm1::FormCreate(TObject *Sender)
: {
:   if(Form2 == nullptr) {
:     Form2 = new TForm2(this);
:     Form2->Show();
:   }
: }
: 

:
: Form2가 Auto-create forms에 포함되어 있으면...
: Project1.cpp 파일이 IDE에 의해서 다음과 같이 구성되기 때문에
:
: Application->CreateForm(__classid(TForm1), &Form1);
: Application->CreateForm(__classid(TForm2), &Form2);
:
:
: Application->CreateForm(__classid(TForm1), &Form1); 에 의해서
:
: TForm1::FormCreate() 이벤트 핸들러가 호출되므로
: 이벤트 핸들러에서 아직 생성되지 않은 From2를 사용하는 결과가 되어 null point 액세스가 발생하는 것임.
:
:
: Auto-create forms 에 포함되어 있는 Form2 를 Available forms로 빼주고
: 위와 같이 처리하면 됌.
:
:

감사합니다~~!  빌더님 덕분에 해결하였습니다.
복 많이 받으세요 빌더님~!

+ -

관련 글 리스트
76091 Form1이 활성화된후 자동으로 Form2를 띄우고 싶습니다 라이손레종 1173 2021/03/31
76099     Re:Form1이 활성화된후 자동으로 Form2를 띄우고 싶습니다 1200 2021/04/02
76092     Re:Form1이 활성화된후 자동으로 Form2를 띄우고 싶습니다 1154 2021/04/01
76093         Re:Re:Form1이 활성화된후 자동으로 Form2를 띄우고 싶습니다 라이손레종 1186 2021/04/01
76094             Re:Re:Re:Form1이 활성화된후 자동으로 Form2를 띄우고 싶습니다 빌더(TWx) 1357 2021/04/01
76098                 감사합니다. 라이손레종 1227 2021/04/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.