폼을 생성하는 방법에는 2가지가 있다.
첫번째는 자동으로 생성하는 방법(AutocreateForm)이고, 두번째는 디자인타임시에 만든 폼을 런타임시에 코딩으로 생성하는 방법(Available Form)이다.
AutoCreate Form
델파이에서 File/New Form메뉴로 생성된 폼은 일단 모두 AutoCreate From으로 등록된다.
확인은 Project메뉴의 Option에서 할 수 있다
AutoCreate Form들은 Project Source에서 Application.Run을 수행하기 이전에 미리 생성된다.
[Project Source]
Begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
End;
Available Form
Project/Option메뉴에서 다음과 같이 폼을 Available Form으로 등록시킬 수 있다.
Available Form으로 등록된 폼을 열기 위해서는 프로그래머가 직접 코딩으로 폼을 생성해야만 열 수 있고 해제할 수가 있다.
생성
Form1 := TForm1.Create(Application);
해제
Form1.Free;
▶ Show
Show를 사용하여 폼을 열면 호출한 코드가 실행을 멈추지 않는다. 이것은 사용자가 원하는 대로 많은 폼을 열어서 자유롭게 폼을 선택하여 작업할 수 있다. (즉, Form1에서 Form2를 호출한 뒤 Form2를 닫지 않고도 Form1을 건드릴 수 있다는 말이다.)
Form1.Show;
Show로 열고 바로 해제를 하면 폼은 바로 나타났다가 사라진다. 폼이 해제될 시점은 폼이 Close될 때이므로 OnClose이벤트를 이용할 수 있다.
Procedure TForm1.FormClose (Sender: Tobject, var Action: TCloseAction);
Begin
Action := CaFree;
End;
▶ ShowModal
ShowModal을 사용하여 폼을 열면 폼을 호출한 코드는 ModalForm이 닫힐 때까지 정지한다. 그러므로 ModalForm이 열린 상태에서는 다른 폼을 선택할 수가 없다. (즉, Form1에서 Form2를 호출한 뒤 Form2를 닫지 않고서는 Form1을 건드릴 수 없다.)
ShowModal로 열려진 폼에 Modal Result값을 가지는 버튼이 있다면 이 버튼의 OnClick이벤트에 Close를 코딩하지 않아도 이 버튼을 누르면 종료된 것이다.
예를 들어서, Form1와 Form2에 버튼이 있다고 가정하자.
Form1의 버튼은 Form2를 호출하는 버튼으로 아래와 같이 코딩되어 있다.
If Form2.Showmodal = mrOK then
Edit1.Text := Form2.Edit1.Text;
그리고, Form2의 버튼은 Modal Result 속성이 mrOK로 되어 있다.
그러면, Form2의 버튼을 클릭하는 순간, OnClick이벤트의 어디에도 폼을 Close하는 코딩이 없음에도 불구하고 Form2는 Close되면서 Form2의 Edit1의 값이 Form1의 Edit1에 반영되는 것을 볼 수 있을 것이다. (Modal Result를 정해주면 자동으로 종료시켜준다.
'공부방 > Delphi' 카테고리의 다른 글
[델파이] Data Type (0) | 2010.07.19 |
---|---|
[델파이] Project Source와 Unit Source의 구성 (0) | 2010.07.19 |
[델파이] 클래스의 가시성 (0) | 2010.07.15 |
[델파이] 오브젝트, 인스턴스, 클래스 (0) | 2010.07.14 |
[델파이] 프로시저와 함수 (1) | 2010.07.14 |