너무 감사합니다. 빌더 처음 쓰는데 그래도 답변 잘해주셔서 넘 감사하네요.
송신영 님이 쓰신 글 :
: Form은 IDE 툴에서 File / New / Form 에서 추가하면 자동으로 알아서 기본적인 골격을 다 만들어 줍니다.
: 그리고 파일 이름은 저장시에 결정해주면됩니다.
: 만약 파일 이름을 Unit1으로 할경우 기본적으로 아래 3개의 파일이 생성됩니다.
:
: Unit1.cpp
: Unit1.h
: Unit1.dfm
:
: cpp와 h는 아실거고 dfm 파일을 텍스트 편집기로 열어보면 Form에 대한 속성이나 Form 위에 올라가는
: 기타 컴포넌트들의 속성이 죽 나열되어있습니다.
: dfm 파일에 나열된 내용들은 디자인 시점에 이미 결정된 값들이고 (위치나 색상 여러가지 속성들)
: 실핼될 때(컴파일,링크) VC에서 리소스를 불러와 화면을 구성하는 것 처럼 Builder도
: dfm 파일의 내용을 불러와 Form을 완성하게됩니다.
: 실행 시점에서는 FormCreate() 나 FormShow() 이밴트 함수에서 이런 속성들을
: 다시 지정할 수 도있습니다.
:
: 이런 Form을 IDE툴에서 자동으로 추가하지 않고 타이핑으로 모두 작성하려면
: 기존에 이미 자동으로 생성된 Form의 위에 3개의 파일을 참고하시면서 만들면 되는데요.
: 아래 부분은 꼭 지켜줘야합니다.
:
: 파일 이름이 Unit1 일 경우 Unit1.h에 파일 이름에 H를 붙이도록 해야합니다.
:
: #ifndef Unit1H // <---- 이부분
: #define Unit1H // <---- 이부분
:
: ...
:
: class TForm1 : public TForm
: {
: ...
: };
:
: extern PACKAGE TForm1 *Form1;
:
: #endif
:
:
: class 이름이 TForm1 이고 인스턴스 이름이 Form1 인경우
: Unit1.dfm 파일의 맨 위 첫줄은 아래와 같아야 합니다.
:
:
:
: object Form1: TForm1
:
:
:
:
: 그리고 당연히 cpp 파일에는 TForm1으로 class 이름을 사용해야되고요..
:
: TForm1 *Form1;
:
: __fastcall TForm1::TForm1(TComponent* Owner)
: : TForm(Owner)
: {
: ...
:
: }
:
: ...
:
:
:
: 다른 프로젝트에서 사용하던 Form 파일을 가져다가 파일 이름을 변경해서 사용해야할 경우
: 위에 것들을 모두 변경해주고 프로젝트에서 Add 해주면 됩니다.
: 그러나 그런 경우가 아니라면 그냥 자동으로 만들어주는 기능을 사용하세요.
:
: 프로젝트에 등록하면 프로젝트이름.cpp 파일에 아래와같이 자동으로 Form을 생성하는 코드가 추가됩니다.
:
:
: #include
: #pragma hdrstop
: #include
: //---------------------------------------------------------------------------
: USEFORM("Unit1.cpp", Form1);
: USEFORM("Unit2.cpp", Form2);
: //---------------------------------------------------------------------------
: WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
: {
: try
: {
: Application->Initialize();
: Application->MainFormOnTaskBar = true;
: Application->CreateForm(__classid(TForm1), &Form1); // Form 생성 1
: Application->CreateForm(__classid(TForm2), &Form2); // Form 생성 2
: Application->Run();
: }
: catch (Exception &exception)
: {
: Application->ShowException(&exception);
: }
: catch (...)
: {
: try
: {
: throw Exception("");
: }
: catch (Exception &exception)
: {
: Application->ShowException(&exception);
: }
: }
: return 0;
: }
:
:
: Project 옵션에서 해당 Form을 자동생성하지 않도록 설정할 경우 위에 코드중에 주석으로 "Form 생성 " 이란 부분이 없어집니다.
: 그리고 코드 상에서 필요한 시점에 직접
: Application->CreateForm(__classid(TForm2), &Form2); 이렇게 생성하거나
: 아니면 new로 생성하여 사용하면됩니다.
:
: 성시완 님이 쓰신 글 :
: : VC 쓰다가 C 빌더 쓰려니 혼란스럽네요.
: : 폼을 설계하는데 폼은 VC에서 리소스인데 빌더에서는 클래스로 취급하나요?
: : 영 감이 오질 않네요. 소스 파일과 이름을 같게 하려니 이미 이름이 있다고 하고 그래서 소스 파일 이름을 억지로 바꿔야 하네요.
: : 고수님들 답변 부탁드립니다.