读书人

动态打开指定窗口名称的有关问题

发布时间: 2012-03-03 15:33:02 作者: rapoo

动态打开指定窗口名称的问题
代码如下:问题是当我没有创建Form2时此代码会产生错误
procedure TForm1.Button1Click(Sender: TObject);
var
objfor :TForm;
begin
objfor := TForm(Application.FindComponent( 'Form2 '));
objfor.Show;
end;
我的目的是实现如下代码
procedure TForm1.Button1Click(Sender: TObject);
var
objfor :TForm;
begin
objfor := TForm(Application.FindComponent(inputbox( '输入Form窗体名称 ', '窗口名称: ', 'Form2 ')));
if objfor = nil then//如果找不到或者窗口没有创建就创建对应类的窗口
begin
objfor:=T《这里我如何替换》.Create(Application);
end;
objfor.Show;
end;
我的意识是让用户自己输入自己需要打开的窗口名称该怎样实现。

[解决办法]
initialization
...
RegisterClass(TForm2);
RegisterClass(TForm3);
...
finalization
...
UnRegisterClass(TForm2);
UnRegisterClass(TForm3);
...

function TMainForm.FindForm(FormName,FormCaption: string): TForm;
var
FindForm:TForm;
FindFormClass:TFormClass;
classname:string;//窗体类名
begin
FindForm:=tform(FormName);
classname:= 'T '+formname;
FindFormClass:=TFormClass(Findclass(classname));
if FindFormClass <> nil then
begin
application.Createform(FindFormClass,FindForm);
FindForm.Caption:=FormCaption;
result:=FindForm;
end;
end;
先注册VCL原生组件,使用RTTI技术就能通过字符串动态创建控件。
[解决办法]
看一下是这个意思吗:

http://community.csdn.net/Expert/topic/5546/5546004.xml?temp=.7233087

读书人网 >.NET

热点推荐