[문제점]
MainForm의 Form생성자나 FormCreate이벤트에서 Close는 동작하지 않습니다.
아직 Show되지도 않았기 때문이죠
[해결방안]
원하시는 기능은
WinMain에서 처리하는것이 좋습니다.
Project1.cpp 에 보면
WinMain함수가 있습니다.
int WinMain(..)
{
//Main폼을 생성하지 전에 Login-dialog를 생성해서 체크한다.
Form_Login=new TForm_Login(NULL);
if( Form_Login->ShowModal() == mrCancel )
{
delete Form_Login;
return 0;
}
// 정상적은 진행
// 생략 ....
Application->CreateForm(Form_Main,...) //메인폼 생성
Application->Run();
//생략..
}
그럼..
까망이 님이 쓰신 글 :
: 1. 아래처럼 Form1을 Closse 할때 값을 설정해 주시고
:
: void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
: {
: ModalResult = ResultValue; //ResultValue 는 결과값입니다. 원하는 로직으로 설정하세요 (mrOk, mrCancel)
: }
:
: 2. 리턴받는 데이터를
:
: __fastcall TForm2::TForm2(TComponent* Owner)
: : TForm(Owner)
: {
: Form1=new TForm1(this);
: int modalResult = Form1->ShowModal(); //Form2가 메인일 때 Form1 먼저 출력
: if(modalResult == mrCanCel)
: {
: Form2->Close();
: }
: }
:
: 이렇게 설정해주면 될거 같네요.
:
:
: 초보 님이 쓰신 글 :
: : Form2가 메인폼이고 Form1이 서브폼입니다.
: : 그래서
: : void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
: : {
: : CanClose=true;
: : Form1->Close();
: : Form2->Close();
: : }
: : 이렇게 해줘도 x버튼을 누르면 결국 메인폼이 뜹니다.
: :
: : 메인에서는
: : __fastcall TForm2::TForm2(TComponent* Owner)
: : : TForm(Owner)
: : {
: : Form1=new TForm1(this);
: : Form1->ShowModal(); //Form2가 메인일 때 Form1 먼저 출력
: : }
: : 이렇게 설정해 두었구요.
: :
: : memi 님이 쓰신 글 :
: : : Form1->Close();
: : :
: : :
: : : 가거규 님이 쓰신 글 :
: : : : 로그인을 해서 창을 띄우는 형식으로 프로그램을 만들었는데요
: : : : 메인폼이 따로 있고 서브폼으로 로그인을 만들었는데
: : : : 따로 종료 버튼을 만들어서 종료버튼을 누르면 프로그램이 종료됩니다.
: : : : 그렇지만 서브폼 x버튼을 누르면 메인폼이 뜨지요.
: : : :
: : : : x버튼을 누를때 프로그램이 종료되게 하고싶은데
: : : : 어떻게 해야 할까요?