文档介绍:5 多窗体和MDI窗体
在应用程序中,当打开一个文件窗体时,原来文件所在的窗体就会被新文件所在的窗体覆盖,即该应用程序只能打开一个窗体,如Windows的“记事本”,这种应用程序称为单文档应用程序。如果一个应用程序能够同时打开多个文档窗体,而且这些窗体的外观基本一致,具有共同的系统菜单,每个文档窗体彼此之间可以相互切换,这种应用程序称为多文档程序MDI(Multiple Document Interface)。
多文档界面是一个能够同时处理多重文档的应用程序的用户界面和窗体结构。MDI是一种特殊的多窗体结构。普通的多窗体是多个相互独立的窗体,虽然也有一个主窗体,但是这个主窗体可以是这多个窗体中的任何一个窗体。但是对于MDI来说,只有父窗体才能被设置为主窗体。它就像一个容器一样包含着许多子窗体,父窗体与子窗体之间是一种隶属关系,而子窗体之间是一种平等的关系。
在MDI程序中,每个子窗体都是一个独立的窗体,但它们没有菜单,只有父窗体才有菜单,不过这些菜单项同时也可以被用于子窗体。尽管许多子窗体可以同时被显示,但一次只有一个子窗体被激活,并且子窗体不能移动到父窗体以外的区域。
VCL Form多窗体
新建一个项目时,项目中已包含了一个名为Form1的窗体。若要向项目中加入新的窗体,有两种方法,一是执行FileNewForm-Delphi For Win32菜单命令,项目中会增加一个名为Form2的新窗体,按此方法,可以为程序加入多个窗体;另外一种方法是使用窗体模板,Delphi 的设计思想是代码重用性,所以系统提供了一些用户可重复应用的窗体模板。使用窗体模板,可以快速地生成多种对话框窗体,节省了大量的重复工作。例如要为项目增加一个About对话框窗体,可以选择FileOther菜单命令,在Delphi Projects的Delphi Files中选择About Box对话框,项目中会增加一个About窗体()。
Project Options 对话框
VCL Form多窗体
一般在默认情况下,工程中所有的窗体在程序运行时都是自动创建的,这是因为工程文件在执行时,由系统执行了创建窗体的过程。例如包含了两个窗体的工程文件代码清单如下:
Program Project1;
uses
Forms,
Unit1 in ''{Form1},
ABOUT in '' {AboutBox};
{$R *.RES}
begin
;
(TForm1,Form1);
(TAboutBox,AboutBox);
;
End.
VCL Form多窗体
要实现这种操作,首先使用ProjectOptions菜单命令打开Forms选项卡,。将AboutBox窗体移动到右侧的列表框,即不允许系统自动创建AboutBox窗体。当需要创建并显示这个对话框窗体时,需要编写一个事件处理过程,按下面的方法创建一个TAboutBox的对象,而TAboutBox就是这个窗体的类。然后调用这个窗体的对象的方法显示这个窗体,最后释放这个窗体对象。
procedure (Sender: TObjict);
var About:TAboutBox;
begin
About:=(Self);
try
;
finally
;
end;
end;
VCL Form多窗体
在程序运行时自动显示的窗体是主窗体,当有多个窗体时,第一个创建的窗体被自动设置为主窗体。要改变主窗体的设置, Options对话框中进行设置。程序中除了这个主窗体外,其他窗体并不会自动显示。这些窗体只有通过编写事件处理过程,调用窗体的Show或ShowModal方法才能把这个窗体显示出来。
窗体的重用
1. 创建窗体模板
【】创建窗体模板。
(1) 创建窗体样本。,这个窗体可以实现一个多用户软件的用户登录功能,利用Edit组件获取用户输入的单行字符串信息,利用Lable组件作为Edit组件的标题,并为其提供快捷键功能。当用户在第一个编辑框中输入用户名,按回车键后,光标跳到密码输入编辑框,在这个编辑框输入密码后