Project->Options->Forms->Auto Create forms 删除不需要自动创建的窗体
4.4 Delphi 5项目的框架类 大多数Delphi 5 应用程序至少有一个T F o r m的实例。Delphi 5 VCL 应用程序也只能有一个 TA p p l i c a t i o n的实例和一个T S c r e e n的实例。这三个类在Delphi 5中扮演着重要的角色。下面几节就介绍 这几个类,掌握了这些知识后就可以根据需要修改它们的缺省功能。 4.4.1 TForm 类 T F o r m类是Delphi 5应用程序的焦点。大多数情况下,整个应用程序都是围绕着主窗体转的。从主 窗体,可以打开其他窗体,通常要通过菜单命令或按钮。也可以让Delphi 5自动创建窗体,这样就不 用操心什么时候创建、什么时候删除窗体。也可以选择在运行期间动态创建窗体。 注意Delphi可以创建不使用窗体的程序(例如控制台程序、服务和COM服务器)。这种情况下, TForm就不再是应用程序的焦点。 显示给用户的窗体有两种:有模式的和无模式的。具体使用哪一种窗体,取决于是否希望用户能 够同时与这个窗体和其他窗体交互。 1. 显示一个模式窗体 当打开一个模式窗体后,用户无法与应用程序的其他部分交互,直到用户关闭了这个窗体。模式 窗体通常是对话框,就好像Delphi 5本身的对话框一样。事实上,大多数情况下应当使用模式窗体。 要显示一个模式窗体,只要调用S h o w M o d a l ( )就可以了。下面的代码演示了怎样创建T m o d a l F o r m的实例,并把它作为模式窗体打开: B e g i n / /创建T M o d a l F o r m的实例 ModalForm := TModalForm.Create(Application); t r y if ModalForm.ShowModal = mrOk then / /显示这个窗体 {do something}; / /执行一些代码 f i n a l l y M o d a l F o r m . F r e e ; / /释放窗体的实例 ModalForm := nil; / /把窗体变量设为n i l e n d ; e n d ; 上面的代码演示了怎样动态创建T M o d a l F o r m的实例以及把实例赋值给M o d a l F o r m变量。注意:如 果需要动态创建一个窗体的实例,就要把这个窗体从Project Options对话框的A u t o - C r e a t e框中去掉。如 果窗体的实例已经存在,可以调用S h o w M o d a l ( )函数打开它,其他代码可以删掉,变成下面这样: ... if ModalForm.ShowModal = mrOk then {} ...MDI窗体同理创建 S h o w M o d a l - 〉S h o w《Delphi5开发人员指南》第4章
2. 打开无模式窗体 要打开一个无模式窗体,可以调用S h o w ( )。无模式窗体与有模式窗体的区别是,用户可以在无模式窗体和其他窗体之间切换。这样,用户就可以同时工作于一个应用程序的几个部分。下面的代码演示了怎样动态创建一个无模式的窗体: ... begin // 如果M o d a l F o r m已经存在 If not Assigned(Modeless) then Modeless := TModeless.Create(Application);// 创建窗体 MOdeless.Show; // 显示窗体 end; 上述代码同时演示了怎样防止一个窗体的多个实例存在。记住,无模式的窗体允许用户与应用程 序的其他部分交互。这样,用户可以照常使用菜单命令,或者创建T M o d e l e s s的另一个实例。因此,需要考虑这些实例的创建和删除问题。 要特别注意窗体的实例:当通过窗体的系统菜单或者窗体上的C l o s e按钮关闭这个窗体时,窗体并没有真正从内存中释放。它仍然还在内存中,除非关闭了主窗体(即应用程序)。在上面这个程序示例中,t h e n后面的语句只会执行一次,前提是这个窗体不是自动创建的。如果希望用户关闭了窗体就在内存中释放它,必须处理它的O n C l o s e事件,并且把A c t i o n参数设为c a F r e e,这样,V C L就会在这个窗体关闭时释放它。
大多数Delphi 5 应用程序至少有一个T F o r m的实例。Delphi 5 VCL 应用程序也只能有一个
TA p p l i c a t i o n的实例和一个T S c r e e n的实例。这三个类在Delphi 5中扮演着重要的角色。下面几节就介绍
这几个类,掌握了这些知识后就可以根据需要修改它们的缺省功能。
4.4.1 TForm 类
T F o r m类是Delphi 5应用程序的焦点。大多数情况下,整个应用程序都是围绕着主窗体转的。从主
窗体,可以打开其他窗体,通常要通过菜单命令或按钮。也可以让Delphi 5自动创建窗体,这样就不
用操心什么时候创建、什么时候删除窗体。也可以选择在运行期间动态创建窗体。
注意Delphi可以创建不使用窗体的程序(例如控制台程序、服务和COM服务器)。这种情况下,
TForm就不再是应用程序的焦点。
显示给用户的窗体有两种:有模式的和无模式的。具体使用哪一种窗体,取决于是否希望用户能
够同时与这个窗体和其他窗体交互。
1. 显示一个模式窗体
当打开一个模式窗体后,用户无法与应用程序的其他部分交互,直到用户关闭了这个窗体。模式
窗体通常是对话框,就好像Delphi 5本身的对话框一样。事实上,大多数情况下应当使用模式窗体。
要显示一个模式窗体,只要调用S h o w M o d a l ( )就可以了。下面的代码演示了怎样创建T m o d a l F o r m的实例,并把它作为模式窗体打开:
B e g i n
/ /创建T M o d a l F o r m的实例
ModalForm := TModalForm.Create(Application);
t r y
if ModalForm.ShowModal = mrOk then / /显示这个窗体
{do something}; / /执行一些代码
f i n a l l y
M o d a l F o r m . F r e e ; / /释放窗体的实例
ModalForm := nil; / /把窗体变量设为n i l
e n d ;
e n d ;
上面的代码演示了怎样动态创建T M o d a l F o r m的实例以及把实例赋值给M o d a l F o r m变量。注意:如
果需要动态创建一个窗体的实例,就要把这个窗体从Project Options对话框的A u t o - C r e a t e框中去掉。如
果窗体的实例已经存在,可以调用S h o w M o d a l ( )函数打开它,其他代码可以删掉,变成下面这样:
...
if ModalForm.ShowModal = mrOk then
{}
...MDI窗体同理创建 S h o w M o d a l - 〉S h o w《Delphi5开发人员指南》第4章
要打开一个无模式窗体,可以调用S h o w ( )。无模式窗体与有模式窗体的区别是,用户可以在无模式窗体和其他窗体之间切换。这样,用户就可以同时工作于一个应用程序的几个部分。下面的代码演示了怎样动态创建一个无模式的窗体:
...
begin
// 如果M o d a l F o r m已经存在
If not Assigned(Modeless) then
Modeless := TModeless.Create(Application);// 创建窗体
MOdeless.Show; // 显示窗体
end;
上述代码同时演示了怎样防止一个窗体的多个实例存在。记住,无模式的窗体允许用户与应用程
序的其他部分交互。这样,用户可以照常使用菜单命令,或者创建T M o d e l e s s的另一个实例。因此,需要考虑这些实例的创建和删除问题。
要特别注意窗体的实例:当通过窗体的系统菜单或者窗体上的C l o s e按钮关闭这个窗体时,窗体并没有真正从内存中释放。它仍然还在内存中,除非关闭了主窗体(即应用程序)。在上面这个程序示例中,t h e n后面的语句只会执行一次,前提是这个窗体不是自动创建的。如果希望用户关闭了窗体就在内存中释放它,必须处理它的O n C l o s e事件,并且把A c t i o n参数设为c a F r e e,这样,V C L就会在这个窗体关闭时释放它。