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.