아래와 같이 변수 선언이 되어있고,
var
f_main: Tf_main;
cls: TClass;
Frm: TForm;
implementation
uses ........
{$R *.dfm}
이런 형태로 함수 선언이 되어 있습니다.
procedure Tf_main.OpenMenu(Sender:TObject);
begin
cls:=GetClass('Tf_test');
Application.CreateForm(TComponentClass(cls),Frm);
Frm.ShowModal;
Frm.Free;
end;
함수를 콜하면 폼 생성은 잘 됩니다.
그런데 폼에서 다른 폼을 생성하고,
그폼에서 f_test 라는 폼을 참조하면 실행이 에러가 발생합니다.
위의 소스에서 Frm 대신에 f_test를 직접넣으면 잘 됩니다.
두가지가 어떤 차이가 있는건가요?
고수님들 도움 바랍니다.
frm은 나중에 Tf_test 의 클래스로 생성이 되는것뿐이지 그것이 f_test 변수가 되는것은 아닙니다.
예를들면 frm, f_test : integer; 라고 선언했다고 해보면, frm := 9; 이렇게 해놓고 f_test 값을 사용하려고 하는것과 같은 이치 입니다.
그래서 f_test로 생성하면 잘되고 아니면 안된다고 생각하시는 것입니다. ^^