Q&A

  • ' mdi 로 구현하는 MIS 프로젝트 ' 라는 강좌를 읽고..
안녕하십니까.
우선 ' mdi 로 구현하는 MIS 프로젝트 ' 이라는 강좌를 올려주신
이만준님께 감사 드립니다.
(강좌에서 mdi로 검색하면
' mdi 로 구현하는 MIS 프로젝트 '  이라는 것이 있습니다.
참고 바랍니다.)

그런데 제가 그 대로 해보니 실행이 안되는 곳이 있던데요.
아래 부분에서처럼

1. unit2 에
  initialization RegisterClasses([TForm2]);
2. function CreateChild(sClass : string):Boolean;
  함수 생성
3. 메인 폼에서 Form2 := TForm2.Create(Self); 라고 생성했던 루틴을 지우고
  CreateChild('TForm2');

이렇게 하면 childform 이 뜬다고 하셨는데
아무리 해도  뜨지 않습니다.

고수님들의 조언 부탁드립니다.

박한수 올림


==============================================================
4. 차일드 폼 다루기

1)클래스 이름으로 차일드 생성하기

차일드 클래스의 이름만으로 차일드를 생성시키는 방법이 있습니다.
델파이가 비주얼 툴리기 때문에 이런 기능이 필요했겠지요..

(1) 차일드 유닛의 맨 아래에 다음라인을 추가한다.

initialization RegisterClasses([TForm2]);

컴포넌트에서 볼 수 있는 소스지요...클래스를 등록하면
'TForm2' 라는 클래스 이름으로 클래스를 찾을 수 가 있습니다.

(2) 이제 생성을 해보지요

function CreateChild(sClass : string):Boolean;
var MyFormClass : TFormClass;
WorkForm : TForm;
H : THandle;
begin
Result := True;
MyFormClass := TFormClass(GetClass(sClass)); //클래스를 찾아온다
if MyFormClass <> nil then begin
WorkForm := MyFormClass.Create(Application.MainForm);
end else Result := False;
end;
..........

메인 폼에서 Form2 := TForm2.Create(Self); 라고 생성했던 루틴을 지우고

CreateChild('TForm2');

라고 써보지요...역쉬...차일드가 생성될 겁니다..

0  COMMENTS