假设我已经有Form1, Form21.现在在Form1中调用某个文本文件, 获得Form2这个窗体Name, 现在用什么命令来打开 Form2?2.如果我在文本中写入窗体名称,与一些控件名称与属性. 怎么来动态创建这些控件?

解决方案 »

  1.   

    通过类方法创建就可以了,如:
    var
      bF : TForm;
      f : TFormClass;
    begin
     RegisterClass(TForm2);//必须先注册类
      f := TFormClass(findClass('Tform2'));
      bF := f.create(self);
      bF.showModal;
      BF.Free;
    end;
    控件用类似的方法也可以创建
      

  2.   

    谢谢, 不过我的 "Form2" 现在是变量的值, 怎么来 RegisterClass(TForm2);?是不是我要在程序一开始就把所有要动态打开的窗体都注册类?
      

  3.   

    2。FORM1:=TFORM。CREATE(NIL);
       LABEL1:=TLABEL。CREATE(FORM1);
       EDIT1:=TEDIT。CREATE(FROM1);
      

  4.   

    TO:  guanxy(guanxy)谢谢, 不过我的 "Form2" 现在是变量的值, 怎么来 RegisterClass(TForm2);?是不是我要在程序一开始就把所有要动态打开的窗体都注册类?
      

  5.   

    LABEL1。PARENT:=FORM1;
    EDIT1。PARENT:=FORM1;
      

  6.   

    当然,在调用findClass('Tform2')之前必须执行RegisterClass(TForm2),
    可以把这句写在TForm2所在的单元(比如Unit2.pas)的initialization段中,这样
    也不用引用unit2单元了
      

  7.   

    非常感谢 guanxy(guanxy) , 结贴~~