首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2012-03-03 
动态打开指定窗口名称的问题代码如下:问题是当我没有创建Form2时此代码会产生错误procedureTForm1.Button1

动态打开指定窗口名称的问题
代码如下:问题是当我没有创建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

热点排行