第6章 多窗体程序设计 章
当程序比较复杂时,往往需要将不同 功能的程序模块放置到不同的窗体中以 便于管理,由此引出了多窗体程序设计
问题。在Delphi系统设计中,多窗体程序 有两种形式,一种是由多个Form窗体实 现的多窗体程序,窗体与窗体之间彼此 没有主从关系;另一种是由多文档 (Multiple Document Interface,MDI)窗 体实现的多窗体程序。
6.1 多个 多个Form窗体程序设计 窗体程序设计
Delphi系统将程序功能划分为若干子功能 模块,每个模块放置在一个窗体中,进入不 同窗体可以使用不同的程序功能。
6.1.1 创建多个窗体
当打开Delphi开发系统时,系统自动创建 一个Form窗体,其FormStyle属性值默认设 置为fsNormal,表示该窗体是一个普通窗体 ,与其他窗体之间没有隶属关系。多个Form 窗体程序就是在一个程序中使用多个窗体共 同实现整个程序的功能。
1.利用菜单生成多窗体 (1)执行File→New→Other命令,打开如下图 所示的New Item对话框。
New Item对话框
(2)选择Form图标,单击“OK”按钮,即可在 当前项目中添加一个名称为Form2的窗体,该 窗体与Form1窗体在功能与特性上完全一致。 通过这样的方法,可以在项目中添加多个Form 窗体。
提示: 提示:也可执行File→New→Form命令,直接向当前项 目添加一个新的窗体。
2.利用代码创建多窗体 为了提高程序的灵活性,可以利用Create方 法在项目中动态地添加窗体,其语法格式如下:
对象 := 对象类.Create(Self);
其中,对象表示通过Create方法生成的新的 对象,该对象由给定的对象类生成。 【例6-1】通过代码创建一个与当前窗体相同的窗 体,并指定新窗体的名称与标题。
procedure TForm1.FormClick(Sender: TObject); var Form2: TForm1; begin Form2 := TForm1.Create(self); Form2.Caption := '创建的窗口Form2'; Form2.Width := 480; Form2.Height := 300; Form2.Show; end;
程序运行效果如图6-2所示。
【例6-1】程序运行效果 提示: 提示:使用Create方法生成的新窗体功能与原有窗体功 能相同,单击新窗体,也可以再创建一个新窗体。
6.1.2 窗体操作 窗体操作
创建好多个窗体后,可以显示、隐藏、 关闭某个或全部窗体。 1)显示窗体 可以使用Show方法和ShowModel函数来 显示某个窗体,它们的格式分别如下:
窗体名.Show; 窗体名.ShowModal;
Show方法与ShowModal函数的区别时, 使用Show方法显示窗体称为非模式显示,可 以在窗体之间任意切换;使用ShowModal函
数显示窗体称为模式显示,只能显示指定的窗 体,不能切换到其他窗体。 2)隐藏窗体 当显示一个窗体后,如果暂时不需要访问 该窗体,可以使用Hide方法将该窗体隐藏起来 ,当需要访问时再显示出
来。Hide方法的格式 如下:
窗体名.Hide; 提示: 提示:将暂时不使用的窗体隐藏起来,可以提高程序 运行的效率。
【例6-2】编写程序, 在一个窗体中控制另一个 窗体的显示与隐藏状态。
操作步骤如下: (1)执行File→New→Form命令,在当前项目 中添加一个新的窗体Form2,其属性值均取默 认值。 (2)在Form1窗体中添加2个Button组件,将 Caption属性分别设置为“显示Form2”和“隐 藏Form2”。 (3)执行File→Use Unit命令,弹出Use Unit, 如下图所示。选中Unit2单元,单击OK按钮, 在Form1窗体中声明Form2窗体。
Use Unit对话框
(4)为“显示Form2”按钮的OnClick事件添加 如下代码,控制Form2窗体的显示。
procedure TForm1.Button1Click(Sender: TObject); begin Form2.Show; end;
(5)为“隐藏Form2”按钮的OnClick事件添 加如下代码,控制Form2窗体的隐藏。
procedure TForm1.Button2Click(Sender: TObject); begin Form2.Hide; end;
3)关闭窗体 当确定窗体不再使用后,应关闭窗体, 从而释放该窗体占用的资