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
[76094] Re:Re:Re:Form1이 활성화된후 자동으로 Form2를 띄우고 싶습니다
빌더(TWx) [builder] 1368 읽음    2021-04-01 14:13
라이손레종 님이 쓰신 글 :
:  님이 쓰신 글 :
: : 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를 띄우고 싶습니다 라이손레종 1180 2021/03/31
76099     Re:Form1이 활성화된후 자동으로 Form2를 띄우고 싶습니다 1208 2021/04/02
76092     Re:Form1이 활성화된후 자동으로 Form2를 띄우고 싶습니다 1161 2021/04/01
76093         Re:Re:Form1이 활성화된후 자동으로 Form2를 띄우고 싶습니다 라이손레종 1193 2021/04/01
76094             Re:Re:Re:Form1이 활성화된후 자동으로 Form2를 띄우고 싶습니다 빌더(TWx) 1368 2021/04/01
76098                 감사합니다. 라이손레종 1238 2021/04/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.