将你要动态创建的窗体设计好,比如上边要有的控件,事件等,然后在要创建的地方写以下代码:
Application.CreateForm(TFrom1, Form1);
try
Form1.ShowModal;
...
...
finally
Form1.Free;
end;
记住这样创建的窗体一定要释放,否则可能会反复创建若干窗体出来而内存得不到释放。
动态创建窗体的方法不止这一个,也可以使用类的方法TForm1.Create(...),这两种方法在性质上有所区别,不过你也不用关心这么多了,达到目的就行。
Application.CreateForm(TFrom1, Form1);
try
Form1.ShowModal;
...
...
finally
Form1.Free;
end;
记住这样创建的窗体一定要释放,否则可能会反复创建若干窗体出来而内存得不到释放。
动态创建窗体的方法不止这一个,也可以使用类的方法TForm1.Create(...),这两种方法在性质上有所区别,不过你也不用关心这么多了,达到目的就行。
解决方案 »
- 对控件数组(EDIT)中的数进行操作的问题?
- 新手数个比较模糊的问题请教,请高手解惑
- (期分200)用SOAP做的三层系统,想用asp调用一些接口,有没有简单的连接示例。UP有分
- 数据窗体的疑问??
- 国庆节散分!祝大家节日快乐,每天一个新台阶,新气象!
- 我要做一个程序,其中一些功能只允许 Windows 2000 的系统管理员才能运行,该怎么做?
- 向Raptor(猛禽)/pazee(耙子)/太可怕 等各位老大求助 Help me~
- 有个问题请教一下:delphi中实现的RemoteDatamodule是不是一个DCOM组件,我都被搞糊涂了
- Delphi6 的dbExpress的速度问题 急!!!1
- 怎么回事???????
- 指针!!!!
- delphi 动态增加sql数据库中字段后,如何动态删除?要快哦!
非模式窗体:
var Form1: Tform1;
begin
form1 := TForm1.create(self);
form1.show;
end;模式窗体:
var Form1: Tform1;
begin
form1 := TForm1.create(self);
form1.showmodal;
form1.release;
end;
begin
if not Assigned(Pointer(Instance)) then
TForm(Instance) := FormClass.Create(AOwner);
TForm(Instance).Show;
end;
如
var
Tmp: TForm2;
则 CreateDynamicForm(TForm2, Tmp, Self);
要注意的是在相应窗口的OnClose里
Action := caFree;
Tmp := nil;
Tmp还需要是全局的