我知道一个窗口的名称,即一个字符串,例如FRMDEPT,现在我如何根据这个变量将该窗口打开,窗口是已有的,请问各位怎么办?

解决方案 »

  1.   

    如果有窗口名称frmdept,我可以这么写,但是现在是一个字符串变量    
            frmDept := nil;
            frmDept := TfrmDept.Create(nil);
            frmDept.Align := alClient;
       现在frmdept为一个字符串,我该怎么做?怎么根据字符串打开一个已经存在的窗口
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
       temp : TObject ;
    begin
       temp := Application.FindComponent('Form2');
       if temp <> nil then
       with temp as Tform do
       begin
         show ;
       end ;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
       temp : TObject ;
    begin
       temp := Application.FindComponent('Form2');
       if temp <> nil then
       with temp as Tform do
       begin
         close ;
       end ;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
       Form2.show ;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
       Form2.close;
    end;
    一样
      

  3.   

    如果form2没有创建,temp := Application.FindComponent('Form2');
    temp则为nil
      

  4.   

    借楼主一地 (谢楼主:)) 
    --------------------------------
    窗体这样可以(用字符串打开) ,但如果是函数呢 ?即 :Function FName : Integer ;通过字符串来调用 ,即  
    s := 'FName' ; 
    通过S 来调用这个函数 如上要求应该不可能实现 ,请大家谈谈看法,谢谢
      

  5.   

    IF FormExists('FORM2' )=FALSE THEN Application.CreateForm(FORM2,FORM2);
    procedure TForm1.Button1Click(Sender: TObject);
    begin
       FORM2.show ;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
       FROM2.close;
    end;
      

  6.   

    我的工作是这样的:将窗口名称存到数据库的一个表中,我要从数据库中读出窗口变量;然后根据这个窗口变量打开该窗口。我试了上面第一位说的方法,好象不行,因为我的窗口没有CREATE,就在调用的时候CREATE,再show;各位请问怎么办
      

  7.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      tmpform: TFormClass;
      tmpobject: TObject;
      tmpstr: string;
    begin
      tmpstr:='Tform2';   //tmpstr就是你要传的字符
      tmpform:=TFormClass(FindClass(tmpstr));
      tmpobject:=tmpform.Create(nil);
      (tmpobject as Tform).Show;
    end;initialization
    begin
     registerclasses([Tform2]);
    end;
    end.
      

  8.   

    simonzone(我很菜,可是我很温柔!) 你的方法很好,我再问一下可不可以不要registerclasses([Tform2]),即对窗口类注册;因为我想只要从数据库里面加进去以后,不应修改很多程序就OK,你答我的问题肯定会给你分的,非常感谢你!
      

  9.   

    我有能力帮助你,请看我站http://www.to-happy.com《大事》里的诸多部分。实用有效。
      

  10.   

    以我现在的水平还去不掉它.呵呵.
    RTTI就是这样.
    我来这里不是为了分的.
    因为我从这里得到比分更重要的东西.
      

  11.   

    simonzone(我很菜,可是我很温柔!):你好不管怎么样,我的问题在你的帮助下解决了,很感谢你!能和你交朋友吗?我的QQ号码为57973235;邮箱是[email protected].你说的很对,我们在这里得到了比分更重要的东西!