关于delphi Form的问题

来源:百度知道 编辑:UC知道 时间:2024/07/07 01:36:05
我想实现以下功能。
在Form1下通过自定义过程ShowWindows显示From2,ShowWindows是这么写的:
procedure TForm1.ShowWindows(OpenFormName:TForm);
begin
With TForm.Craete(Application)do
try
ShowModal;
finally
Free;
end;
end;
procedure TForm1.ButtonClick(Sender: TObject);
begin
ShowWindows(Form2);
end;
运行不报错,但打开的不是我想要打开的Form2。应该是form2没有传过来,请高手帮忙看看,该怎么写,谢谢!谢谢!

先说你的代码中的问题:创建的窗体已经有了宿主,就没有必要手动释放。
也就是说你的TForm在创建时宿主为application,在finally部分不需要手动释放这个窗体。

再说你想实现的目的:
因为你传入的参数是一个基类(TForm),而就是说无论你传入哪个参数,实现的都是TForm的对象的实例,所以永远都是一个空窗体,既TForm的实例。
如果想用一个过程实现多个不同窗口的动态创建,试试case of语句。

form2:= TForm.create;
try
form2.showmodel;
finally
end;