如何把诸如'TForm1','TForm2','TFormMain'之类的窗体字符转化为窗体类?我是想通过传一个窗体字符名来打开某个窗体,请大虾们指导!!!

解决方案 »

  1.   

    FindComponent('TForm1');
    procedure TForm1.Button1Click(Sender: TObject);var
      i: Integer;
    const
      NamePrefix = 'MyEdit';
    begin
      for i := 1 to 20 dobegin
        TEdit.Create(Self).Name := NamePrefix + IntToStr(i);
        with TEdit(FindComponent(NamePrefix + IntToStr(i))) do
        begin
          Left := 10;
          Top := i * 20;
          Parent := self;
        end;
      end;
    end;
      

  2.   

    TForm(FindComponent('form1')).ShowModal;
      

  3.   

    呵,现在轮到我替你回答问题了,原来你也替我解决了好几个问题!
    Procedure ShowForm(FormClassName : String);
    begin
      with TFormClass(FindClass(FormClassName)).Create(Application) do
      try
        ShowModal;
      Finally
        Free;
      end;
    end;这是个过程,你必须在主窗体中加入注册类名的过程
    Initialization
      RegisterClasses([TForm1, TForm2, TForm3, TFormMain]);然后在主窗体中一按钮事件中:
    ShowForm('TForm1')或者ShowForm(Edit1.Text);即可啦
      

  4.   

    不好意思,我上面的错了TForm(Application.FindComponent('form2')).Show;