본문 바로가기
책갈피

폼의 생성과 해제

김진호 |2008.05.16 22:14
조회 24 |추천 0
1. 폼의 생성과 해제

폼을 생성하는 방법에는 2가지가 있다.
첫번째는 자동으로 생성하는 방법(Autocreate Form)이고, 두번째는 디자인타임시에 만든 폼을 런타임시에 코딩으로 생성하는 방법(Available Form)이다.

첫번째 방법인 Autocreate Form을 많이 사용하면 메모리가 부족하게 되므로 실제 프로젝트에서는 Main Form을 제외하고는 거의 Available Form으로 사용한다.

1.1 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;
1.2 Available Form

Project/Option메뉴에서 다음과 같이 폼을 Available Form으로 등록시킬 수 있다.(가운데 있는 버튼을 이용한다.)



Available Form으로 등록된 폼을 열기 위해서는 프로그래머가 직접 코딩으로 폼을 생성해야만 열 수 있고 해제할 수가 있다.

▶ 생성
Form1 := TForm1.Create(Application);

▶ 해제
Form1.Free;

1.3 Form 열기

이렇게 생성된 폼을 열기 위해서는 역시 2가지 방법이 있다.

▶ 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를 정해주면 자동으로 종료시켜준다
추천수0
반대수0

공감많은 뉴스 시사

더보기

뉴스 플러스