edure TForm3.FormShow(Sender: TObject); begin Edit1.Text := IntToStr(Chinese + math + english); Edit2.Text := FloatToStr((Chinese + math + english) / 3); end;
(12)为“返回”按钮的OnClick事件添加如 下代码,关闭“计算成绩”窗体并返回控制窗 体。
procedure TForm3.Button1Click(Sender: TObject); begin Form3.Close; end;
6.2 多文档程序设计 文档程序设计
上一节介绍了使用多个Form窗体进行多 窗体程序的设计的方法。本节将着重介绍使 用多文档(Multiple Document Interface, MDI)窗体进行程序设计的方法。在多文档 程序中,每个程序界面与相关程序称作一个 文档,一个窗体可以有多个文档,可以在各 个文档之间切换和传输数据。
6.2.1 创建多个窗体
多文档程
序中有两种类型的窗体,分别 是父窗体和子窗体。
1.父窗体 父窗体是程序的基础,一个多
文档程序只 能有一个父窗体,所有的子窗体必须在父窗体 中运行且受父窗体的控制,任何子窗体都不能 超出父窗体的范围。关闭父窗体时,其所有的 子窗体同时被关闭。 2.子窗体 一个多
文档程序中可以有多个子窗体。可 以在子窗体中添加组件,使其成为与程序进行 交互的对象。在多文档程序中,所有的子窗体 都隶属于一个父窗体,由父窗体控制,子窗体 与父窗体共同实现程序的功能。
6.2.2 创建多个窗体
在多文档程序中,由父窗体统一管理所 有的子窗体,如创建子窗体、获取当前活动 子窗体的信息、与子窗体交换信息和关闭子 窗体等。 1.创建多文档程序 建立多文档程序的方法很简单。由于一 个多文档程序中一定有一个父窗体和至少一 个子窗体,所以可以通过下面的步骤创建一 个简单的多文档程序。 (1)选中需要设置为父窗体的Form窗体, 将其FormStyle属性值设置为fsMDIForm。
(2)执行File→New→Form命令,在当前项目中 添加一个窗体Form2,将Form2窗体的FormStyle 属性设置为fsChild,表示将其设置为子窗体。 至此,完成多文档程序界面的设置,当程序 执行时,可以得到下图所示界面。
MDI应用程序界面
2.创建子窗体 如果希望多文档程序启动时仅显示父窗体 ,由用户决定何时打开子窗体,以及打开多少 个子窗体,则需要通过代码来控制子窗体的打 开。一般,先在父窗体中添加菜单和工具栏, 然后通过菜单或工具栏中的“新建”命令来新 建一个子窗体。 【例6-4】创建一个MDI应用程序,在父窗体中 通过“新建”菜单来新建一个子窗体。 操作步骤如下: (1)将当前Form窗体的FormStyle属性值设置 为fsMDIForm。
(2)在当前窗体中添加一个MainMenu组件, 在该组件中添加一个 “新建”菜单,并将窗体 的MainMenu属性设置为MainMenu组件。 (3)执行File→New→Form命令,在当前项目 中添加一个窗体Form2,将Form2窗体的 FormStyle FormStyle属性设置为fsMDIChild。 fsMDIChild (4)执行View→Units命令或按Ctrl+F12快捷键 ,打开View Unit对话框。 在对话框中选中Project1项目(如下图(b) 所示),单击OK按钮,在打开的代码编辑器中 添加Project单元的代码,然后将代码中创建子 窗体的代码设置为注释,如下图(a)所示。
MDI应用程序界面
MDI应用程序界面
说明: 说明:将Project1单元代码中创建子窗体的代码设置为 注释,可以使程序执行时只打开父窗体而不会打开子 窗体。
(5)执行File→Use Unit命令,在弹出的Use Unit对话框中选则子窗体对应的代码单元Unit2 ,单击OK按钮,即
可在父窗体中使用子窗体。 (6)选中MainMenu组件中的“新建”菜单, 为其OnClick事件添加如下代码,实现创建子窗 体的功能。
procedure TForm1.N1Click(Sender: TObject); begin Application.CreateForm(TForm2,Form2); end;
程序运行效果如下同所示。
【例6-4】程序运行效果
3.管理子窗体 多文档程序中可以存在多个子窗体,为了 更好地管理子窗体,Delphi系统为子窗体定义 了多个参数。
1)MDIChildCount属性 在父窗体中,可以访问MDIChildCount属性 值来获得子窗体的数目,其格式如下: Count := 主窗体.MDIChildCount; 2)MDIChil