知道了窗体Name,能不能找到窗体对象,如:
窗体Name为Frm,现在要调用该窗体
with TFrm.Create(Self) do .....
这个中间的要写怎样的代码才能把string转换为对象

解决方案 »

  1.   

    没太看明白意思......begin
      with TForm1.Create(application) do
        begin
        Name := 'Frm';
        ShowModal;
        Free;
        end;
    end;
      

  2.   

    我的意思是,窗体Name只是一个变量,然后通这个变量找到窗体对象,再创建窗体.
    我做权限时,窗体上的一些按钮全是动态创建,点击这些按钮就调用相应的窗体,但是只知道窗体的Name,怎样才找到窗体的对象
      

  3.   

    窗体Name只是一个变量,然后通这个变量找到窗体对象,再创建窗体.
    ----------------------
    你这句话本身就是不对的。既然找到了这个窗体对象,那说明窗体已存在了,那还能再创建???
      

  4.   

    可能是意思没说清楚,
    通过类的名字得到类的引用???这个怎么找,就是类的名字是存在数据库里面的string,现在通过它调用窗体
      

  5.   

    var
      aform : tform;
      aclass : tformclass;  
    begin
      aclass := tformclass(findClass('form2'));//form2是从数据库里面读出来的窗体名
      aform := aclass.create(application);
      aform.show;
    End
    这种写法在注释那里就开始报错,找不到form2的对象,应该怎样改
      

  6.   

    给你找了一点资料:http://topic.csdn.net/t/20030603/12/1869918.html
      

  7.   

    uses Unit2,Unit3;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      FormClass: TFormClass;
      frm : Tform;
    begin
      FormClass:=TFormClass(GetClass('TForm2'));
      if FormClass = nil then
         begin
         showmessage('Not Found');
         exit;
         end;
      Application.CreateForm(FormClass,Frm);
      Tform(frm).show;
      TEdit(TForm(frm).FindComponent('edit1')).Text:='aaa';
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      RegisterClass(Tform2);
    end;
      

  8.   

    uses Unit2,Unit3;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      FormClass: TFormClass;
      frm : Tform;
    begin
      FormClass:=TFormClass(GetClass('TForm3'));
      if FormClass = nil then
         begin
         showmessage('Not Found');
         exit;
         end;
      Application.CreateForm(FormClass,Frm);
      Tform(frm).show;
      TForm(frm).Caption := 'Test';
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      RegisterClass(Tform2);
      RegisterClass(Tform3);
    end;