1번과 2번은 동일합니다.
1번은 class 참조형, class 변수가 인자로 전달되기 때문에 항상 class 변수에
Form의 instance가 연결됩니다.
2번은 Create( ... ) 함수의 반환형을 class 변수에 대입하는 방식으로 때때로
class 변수 없이 작업을 진행할 때 사용될 수 있습니다. 예로서, Modal form을
생성해서 사용한다면
with TAnyModalForm.Create( Application ) do
begin
ModalResult := ShowModal;
if ModalResult = ... then
else ...
Close;
end;
와 같이 class 변수없이 사용될 수 있습니다.
3번의 경우는 Self를 owner로 하는 Form을 생성하게 됩니다. Owner란 owner가
메모리에서 해제되면 그 slave(?)도 역시 메모리에서 해제되는, 그러니까 메모
리 해제가 위임되는 대상을 말합니다.
2번에서는 TForm1의 owner는 Application이어서 Application.Destroy가 발생하
면 TForm1 역시 Application에 의해서 메모리가 해제 됩니다. 3번에서는 Self
가 destroy될 때 TForm1이 메모리 해제됩니다.
델초보 님이 쓰신 글 :
: 다음 세 가지는 서로 어떤 차이가 있나요 ?
:
: 1)
: Application.CreateForm(TForm1,form1);
: Form1.show;
: 2)
: Form1 := TForm1.create(Application);;
: Form1.show;
: 3)
: Form1 := TForm1.create(self);;
: Form1.show;
:
:
|