已知STRING类型的FORM名,需要在程序中自动打开以该串为名的FORM(50分)

  • 主题发起人 主题发起人 luby
  • 开始时间 开始时间
L

luby

Unregistered / Unconfirmed
GUEST, unregistred user!
已知STRING类型的FORM名,需要在程序中自动打开已该串为名的FORM
 
e.g.:
TForm(Application.FindComponent('Form2')).Show;
 
补充:

var

aa:string;

aa:='myform'

已经建立了一个已经加入PROJECT中的Tmyform类,其中有已经定义好的一些元素,
但程序开始时并未创建和打开他。

现在希望在程序运行后,在已知aa的情况下,动态地将Tmyform建立并打开。
换言之,打开的代码中不能出现TMYFORM 或MYFORM等字眼,只能用AA代替之。
 
croco:sorry我试过findcomponent 对FORM无效,只对元件有效。
 
?!,TForm也是一个元件,请您再试一下。
 
对不起,您的方法确实可以打开已经CREATE的FORM。但我需要连CREATE也用变量动态
去做。谢谢!
 
创建TMyForm类窗口时,不用TMyForm是不可能的。
 
可查一下以前的讨论。
 
难道就没有别的办法吗?
 
这是另一种方法,可参考:
procedure TForm1.Button1Click(Sender: TObject);
var
AForm: TForm;
FormClass: TComponentClass;
begin
FormClass := TComponentClass(FindClass('TForm2'));
Application.CreateForm(FormClass, AForm);
AForm.Show;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterClasses([TForm2]);
end;
 
var myform:string;//窗口名;
begin
if Application.handle(myform)<>nil then Tform(myform).show;
end;
 
后退
顶部