假设我从数据库读取表名称(已保存为字段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不匹配请问该如何做
procedure frm_main.userWindowOpen(Sender:TObject);
begin
(Sender as TForm).Open;
end;调用处:
userWindowOpen(adoq_temp.FieldByName('frm_name').AsString);//
结果提示什么TObject和String不匹配请问该如何做
参数要求是一个类类型,而你现在给的是asString;该怎么做,期待楼下的答案
var
FormString:String;
begin
FormString:=adoq_temp.FieldByName('frm_name').AsString;
//这里写你要调用的FORM,或者自己CREATE;
YourForm.caption:=FormString;
YourForm.show;
end;
你的方法不行啊
那么可以通过窗体的名字来访问它。
通过名字访问组件的方法是:FindComponent。
如果还不清楚的话可以查看一下帮助。
楼上,是不是可以用这样的方法,调用DLL里面的窗体,而窗体名称就在数据库里面配置了啊。
DLL里面的窗体没有试过。
不过只要你知道它的Owner,就可以用这个方法:FindComponent
我明白你的意思了你的那些将要打开的窗体已经在设计的时候(创建)好了??
然后你是要根据 数据库里的名字,然后打开吧??如果是这样,那我前面就理解错了,不好意思哦。
那 mastersky(浪) 的方法基本对了,就用他说的吧,具体我改改
procedure OpenFieldW1indow
var
FormString:String;
begin
FormString:=adoq_temp.FieldByName('frm_name').AsString;
TForm(Application.FindComponent(FormString)).Show;//如果你要掉的窗体是自动创建的话,这么写
end;
很久以前似乎见过这个问题的解决方法,可以那时候没研究。估计要找些大牛才行了。
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;