如何通过字符串来调用窗体?
我有几个窗体,eg: form1 ,form2,form3 ,在PB 中可通过open 打开,delphi 如何实现,从Create 到 show ? 问题点数:81、回复次数:6Top
1 楼luoweicaisd(笑三少)回复于 2002-08-02 21:04:23 得分 1
调用的前题是你的form不是动态创建的,是程序启动时已创建,只是没show出来。
procedure TForm1.Button1Click(Sender: TObject);
var
str : string;
temp:Tform;
begin
str :='form2';
temp := (application.FindComponent(str) as Tform);
temp.show;
end;
Top
2 楼suny_2001(小鱼儿)回复于 2002-08-02 21:07:58 得分 80
比如一个单元的名字为TEST,它的FORM名字为FRMTEST;
首先要在TEST单元里写上
initialization
RegisterClass(tfrmtest);
然后调用
Uses Test;
procedure Tform1.Button1Click(Sender: TObject);
var
fcType : TFormClass;
f : TForm;
frmname:string;
begin
try
frmname:='Tfrmtest'
fcType := TFormClass(FindClass(frmname));
application.CreateForm(fctype,f);
f.Showmodal;
f.Free;
except
ShowMessage('Form Type not exist,you must register it first');
end;
end;
Top
3 楼zxd_2000(潜龙勿用)回复于 2002-08-02 23:53:02 得分 0
同意luoweicaisd(笑三少)Top
4 楼hezchuan168(开心果)回复于 2002-08-03 08:21:56 得分 0
var
myform:tform;
temp:integer;
begin
//必须先判断Mylist是否已经成立
If Mylist<>nil then
begin
myform :=tfrom.Create(self);
myform.Parent :=self;
temp :=mylist.Add(myform);
//设置mybutton的各项属性
mybutton.Left :=100;
mybutton.Width :=150;
myform.Caption :='第'+inttostr(temp)+'个被建立的对象';//设置mybutton的click事件处理过程
// myform.OnClick :=formIndexofclick;
showmessage(myform.caption)
end
else
showmessage('mylist尚未建立');
end;Top
5 楼liclin(林林)回复于 2002-08-03 08:30:02 得分 0
对于动态创建的窗口,如楼上所说,如果要释放,可在相应窗口的
onclose函数下写入:
Action:=caFree;
myform:=nil;//切记,这句不可少,不然会出错Top
6 楼yyb2000(三流编程机器)回复于 2002-08-03 08:32:19 得分 0
楼上的,,myform:=nil这句只有在MDI的时候才有用吧,,,Top




