Q&A

  • 스트링에 폼이름 받아서 폼을 생성시킬수 있는지...?
스트링으로 클래스 명만 받아서 폼을 생성시킬수 있는지 좀 알려 주세여..

또한 스트링으로 된 이름을 가지고 다른 폼 변수를 참조할 수 있는지...

예)
var
   TESTFORM: TTESTFORM;

"TESTFORM" 이란 스트링을 받아서
TESTFORM 이라는 폼을 참조하여

  TESTFORM := TTESTFORM.CREATE(SELF);
와 같은 효과를 얻을 수 있는지좀 알려주세여...
1  COMMENTS
  • Profile
    홍성락 2002.03.28 20:42
    hsr///////////////////////////////////////////
    GetClass이함수로 클래스명을 구해 클래스를 얻어와서 사용해도 되는데요
    RegisterClasses에 기억(등록)하는 것이 선행되어야합니다.
    더 좋은 방법도 있을듯한데요 컨포넌트처럼 FindComponent사용할수도 없고
    클래스라서......

    procedure TForm1.FormCreate(Sender: TObject);
    begin
        //현재폼 유닛에 있는 클래스들을 등록함
        RegisterClasses([TForm2, TForm3]);
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
       str : string;
       fff : TForm;
       InstanceClass: TComponentClass;
    begin
       str := 'TForm' + intToStr(2);
       InstanceClass := TComponentClass(GetClass(str));
       Application.CreateForm(InstanceClass, fff);
       fff.Show;
    end;