如何将string与Tform进行转换?(内详)(100分)

  • 主题发起人 主题发起人 dana
  • 开始时间 开始时间
D

dana

Unregistered / Unconfirmed
GUEST, unregistred user!
比如,要创建一个窗口,要创建的窗口的名字是写在edit1.text上的。
var ff:string;
ff:=edit1.text?????? 这里该如何写?
ff.create(application);
ff.shwmodal;

 
不要搞笑了,你的ff应该是TForm类型的
ff.create后面可以指定ff.name:=edit1.text
但是不能重名
 
?????
 
Form自动创建比较难,也没有意义,因为你的Form上面的控件还得一个个创建。
创建Form上面的控件还是有意义的。 比如:


在窗体Form1上增加四个Label控件}
labels:=TLabel.Create(self);
labels.Parent:=self;
labels.Left:=1+(i mod 2)*154;
labels.Top:=5+(i div 2)*176;
labels.Width:=150;
labels.Height:=17;

labels.caption:='';
 
简单:
先RegisterClass,然后FindClass,再根据Class来创建Form的实例
 
rockjie, 你的方法是行不通的,这样没法创建。
虽然这样创建没有实际意义,但我有我的用处,请大家帮帮忙,有什么办法可实现的。
 
dana,这样是不可能的,可以这样
yourfm := TForm.create(self);
yourfm.caption := Edit1.text;
yourfm.name := Edit1.text;
你说说具体的用途和想实现的功能。
也可以这样
var myform: array[0..2] of Tform;
begin
for i := 0 to 2 do begin
yourfm := TForm.create(self);
yourfm.caption := Edit1.text;
yourfm.name := Edit1.text;
...
end;
 
不是我的行不通!是你自己不知道怎么写!好了,不要你的分了!
 
试试panjf的方法,该可以。
 
比如 在单元unit1里要先注册
initialization
RegisterClass(Tform1);


uses unit1
procedure CreateForm(frmname:string);
var
FormClass: TFormClass;
Form: TForm;
FormClassName:string;
begin
FormClassName:='T'+frmname;
FormClass:=TFormClass(GetClass(FormClassName));
Application.CreateForm(FormClass,Form);
Form.ShowModal;
Form.Free;
end;

然后 调用 CreateForm('form1')
 
sunys:
比如 在单元unit1里要先注册
initialization
RegisterClass(Tform1);


这些要如何做?写在哪?
 
要完成他的意思,可以新建一个窗体,然后指定它的caption为ff啊!
var xx:tform;
ff:string;
begin
ff:=edit1.text;
xx:=tform.create(self);
xx.caption:=ff;
xx.showmodal;
end;
 
我要的不是创建一个新的窗口,而是创建一个指定的已存的窗口。
 
早说嘛,你可以用这种方法来实现:
if Edit1.Text = 'form2' then begin
form2 := Tform2.Create(self);
form2.Show;
end;
 
创建已知的有限类型的几种窗体,可以考虑上面的(panjf)方法。
 
rockjie写的东西确实存在一些问题,因为ff.name对于某些字符串来说不能赋值。
例如edit1.text := 'hello!';
ff.name := edit1.text;
这样会出错,只能修改ff.caption := edit1.text;
 
我同意netliuru的看法,并以验证。而panjf的做法只有当edit1的编辑框里是form2时才能显示form2表单!
 
是不是说,edit1的文本,text值是窗体的类名,
然后,我们要根据类名来建立窗体的?
比如:edit1 中文本框的内容是tform1,
然后,就要根据tform1新建一个窗体?
楼主是不是这个意思?只有这样,才有难度的嘛!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
535
import
I
后退
顶部