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

Delphi工程中只知道窗体名称和窗体类名称(字符串名称),能否可以创建窗体?该怎么处理

2012-03-19 
Delphi工程中只知道窗体名称和窗体类名称(字符串名称),能否可以创建窗体?平时创建窗体如下:application.Cr

Delphi工程中只知道窗体名称和窗体类名称(字符串名称),能否可以创建窗体?
平时创建窗体如下:
application.CreateForm(TForm2,Form2);
Form2.show;
现在只知道窗体名称是字符串:
Class_name   := 'TForm2 ';
Form_name   := 'Form2 ';
如何能象上面一样打开Form2窗体

[解决办法]
以前有过一篇通过类名(字符串)创建类实例的文档,可以搜一下看看
[解决办法]
var
frmtmp : TForm2
begin
frmtmp := TForm2.Creat(nil);
frmtmp.show;
end;
[解决办法]
RegisterClasses([TForm2]);
application.CreateForm(FindClass( 'TForm2 '),Form2);
[解决办法]
老问题了....

Unit Unit1;

//......


implementation
uses Unit2;
{$R *.dfm}

procedure CreateMyForm(const FormClassName, FormName : string);
begin
if Application.FindComponent(FormName)=nil then begin
if GetClass(FormClassName) <> nil then
with TForm(TComponentClass(FindClass(FormClassName)).Create(Application)) do begin
Name := FormName;
Show;
end
else ShowMessage(Format( '类%s未注册 ',[FormClassName])); end
else begin
ShowMessage(Format( '窗体%s已创建过 ',[FormName]));
TForm(Application.FindComponent(FormName)).Show;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
CreateMyForm( 'TForm2 ', 'Form ');
end;

initialization
RegisterClass(TForm2);

finalization
UnregisterClass(TForm2);

end.

热点排行