假设我从数据库读取表名称(已保存为字段frm_name:假设值为'frm_view'),现在要在另一窗口弹开,应该如何做:我的做法如下:
procedure frm_main.userWindowOpen(Sender:TObject);
begin
  (Sender as TForm).Open;
end;调用处:
userWindowOpen(adoq_temp.FieldByName('frm_name').AsString);//
结果提示什么TObject和String不匹配请问该如何做

解决方案 »

  1.   

    userWindowOpen(adoq_temp.FieldByName('frm_name').AsString);//
    参数要求是一个类类型,而你现在给的是asString;该怎么做,期待楼下的答案
      

  2.   

    别用你那个PROCEDURE ,你可以写个类似的procedure OpenFieldW1indow
    var
      FormString:String;
    begin
      FormString:=adoq_temp.FieldByName('frm_name').AsString;
      //这里写你要调用的FORM,或者自己CREATE;
      YourForm.caption:=FormString;
      YourForm.show;
    end;
      

  3.   

    哪位说一下具体如何做nyf1220(我是党员--不过听说最近风声紧,打算换名字) ( 
    你的方法不行啊
      

  4.   

    TForm(Application.FindComponent('Form2')).Show;明白了吗?
      

  5.   

    窗体也是Application的一个组件。当然前提是你的窗体的Owner是Application。如果窗体创建时你没有设置它的Owner,那么默认是Application。
    那么可以通过窗体的名字来访问它。
    通过名字访问组件的方法是:FindComponent。
    如果还不清楚的话可以查看一下帮助。
      

  6.   

    楼上,是不是可以用这样的方法,调用DLL里面的窗体,而窗体名称就在数据库里面配置了啊。
      

  7.   

    lovefox_zoe(爱情狐狸) ( ) 信誉:99  2004-12-03 21:39:00  得分: 0  
     
     
       楼上,是不是可以用这样的方法,调用DLL里面的窗体,而窗体名称就在数据库里面配置了啊。
      
     
    DLL里面的窗体没有试过。
    不过只要你知道它的Owner,就可以用这个方法:FindComponent
      

  8.   

    renfeiyang(任飞扬) ( )
    我明白你的意思了你的那些将要打开的窗体已经在设计的时候(创建)好了??
    然后你是要根据 数据库里的名字,然后打开吧??如果是这样,那我前面就理解错了,不好意思哦。
    那 mastersky(浪)  的方法基本对了,就用他说的吧,具体我改改
    procedure OpenFieldW1indow
    var
      FormString:String;
    begin
      FormString:=adoq_temp.FieldByName('frm_name').AsString;
      TForm(Application.FindComponent(FormString)).Show;//如果你要掉的窗体是自动创建的话,这么写
    end;
      

  9.   

    adoq_temp.FieldByName('frm_name').AsString 是一个字符串, TObject是一个类,这是两个不同的的概念,肯定不匹配。
    很久以前似乎见过这个问题的解决方法,可以那时候没研究。估计要找些大牛才行了。
      

  10.   

    procedure OpenFieldW1indow
    var
      FormString:String;
      TempComponent:TForm;
    begin
      FormString:=adoq_temp.FieldByName('frm_name').AsString;
      TempComponent:=Tform(Application.FindComponent(FormString)) then 
      if Tempcomponent<>nil then 
         TempComponent.show
      else 
        Applicaiton.createform(TempComponent,TForm).showmodal;
    end;