|
: : 두개이상의 폼을 생성할경우에 어떻게 해야하는지 전혀 감을 못 잡고 있네요.
: : 제가 하려고 하는 것은 폼이 2개가 있는데 FORM1 이 메인 이고 FORM2가 있습니다.
: : 그런데 FORM2 에서 입력되는 값으로 FORM1이 동작하게 되어있습니다.
: : 그래서 프로젝트 옵션에서 메인으로 FORM1을 선택하고
: : FORM2가 엑티브되면 FORM2를 열리게는 했는데,(여기까지는 됩니다)
: : FORM2에서 버튼을 클리하면 텍스트 내용은 FORM1으로 전달하고 화면에서는 그 폼을
: : 안보이게 해야하거든요. 그리고 필요할때 다시 띠워야 하는데 어떤 명령어를 써야하는지
: : 모르겠습니다.
: : FORM2->Close()나 Hide()를 하니까 자꾸 에러가 뜹니다.
: : 아직 폼을 핸들하는 방법을 몰라서요..책을 보니 설명만 나와있고
: : 구체적으로 어떻게 쓰는지 예제가 없네요.
: : 고수님들의 답변을 기다리겠습니다.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{
Form2->Show();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2->Show();
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::ComboBox1Click(TObject *Sender)
{
Edit1->Text=ComboBox1->Items->Strings[ComboBox1->ItemIndex];
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
Form1->Edit1->Text=Edit1->Text;
Form2->Hide();//혹은 Form2->Close();
}
//---------------------------------------------------------------------------
가 소스 입니다.
form1 에는 버튼 하나와 텍스트
form2 에는 버튼 하나와 텍스트 콤보 박스가 있죠
두 form 모두 form style 은 fsnormal입니다.
메인은 form1입니다.
form2에 버튼을 클릭하면 form2에 있던 텍스트 내용이 form1의 텍스트로 잘가거든요.
근데 form2를 화면에서 안보이게 할려구요...자주 엑세스 하진 않지만 form2를 다시
불러서 써야 하는 경우가 있거든요...
위와 같이 하니까
Project Project1.exe raised exception class ElnvaludOperation with message 'Canno change
Visible in OnShow or Onhide'. Process stopped . Use Step or Run to continue.라는 메세지가
나옵니다.
책을 보니 Action 파라미터 들이 있던데 이런 것도 어떻게 쓰다는 예제가 없는
책이어서요...
부탁드려요....
|