application.createform(Tform1,form1) 如果 TForm1是一個表中的某字段的內容,又怎樣搞呀?(在線等待中......)(1

  • 主题发起人 主题发起人 bolly
  • 开始时间 开始时间
B

bolly

Unregistered / Unconfirmed
GUEST, unregistred user!
application.createform(Tform1,form1) 如果 TForm1是一個表中的某字段的內容,又怎樣搞呀?(在線等待中......)(100分)<br />application.createform(Tform1,form1) 如果 TForm1是一個表中的某字段的字符內容,又怎樣搞呀?如:
pro_name:=Table1.FieldByName('pro_name').asString;
application.createform('T'+pro_name,pro_name) //我知道這句是錯誤的,但我不知怎麼去寫呀,請各位幫忙,謝謝~
pro_name.show;
 
哦,不可能是这样的。
把pro_name变成一个类类型吧。
 
怎麼變~~~~
代碼~~~~
 
FindClass('T'+pro_name)
 
我有个办法,你先通过类建一个实例,然后把实例的名字付成你的字符串。
 
FindClass应该是可以的。
 
看看吧,也许能帮你
procedure TForm1.Button1Click(Sender: TObject);
var
Forms:array[0..3] of Tform1;
i:integer;
begin
for i:=0 to 3 do
begin
forms:=Tform1.Create(nil);
forms.Left:=200-5*i;
forms.top:=200+5*i;
forms.Name:=char(i+78);
forms.Caption:=forms.name;
forms.show;
end;
end;
 
getclass 不行?!
有字符串到类的转换或函数就好了.
不太好办.
 
我也很想知道。
现在的解决方法是,保存名称的同时,保存类。
当然是保存在TStringClass里面。
 
关注一下!
 
TFormClass(FindClass('TForm1')).Create.ShowModal;
不能再用Application.CreateForm来创建了,变量名自己声明一个吧。
myform:Tform;
myform:=TformClass(FindClass('TForm1').Create;
myform.show;

注意再程序运行前必须执行
registerClass(Tform1); 一般放在initialization部分
 
If pro_name='Form1' Then
application.createform(TForm1,Form1)
Else If pro_name='Form2' Then
application.createform(TForm2,Form2)
...
 
shangshang的方法还是比较好的,不过不知道有没有一下把主窗体应用
的其他窗体一下都注册完的属性。
 
多人接受答案了。
 
后退
顶部