第9章应用程序界面设计技术 本章要点: 区多窗体程序设计 区SD应用程序设计 A区MD应用程序设计 区变量的作用域
第9章 应用程序界面设计技术 本章要点: 多窗体程序设计 SDI应用程序设计 MDI应用程序设计 变量的作用域
9.1循序渐进学理论 911多窗体程序的设计 为应用程序添加和删除窗体 新建一个 Delphi项目时,项目中只有一个名为 Forml 的窗体,如果要为当前应用程序添加窗体,可通过单 击工具栏上的新建窗体□”按钮来实现。如果想 把当前项目中的某窗体去除,可通过单击工具栏上的 移去文仁←”按钮来实现。 2.窗体间切换 切换方法是单击工具栏上的查看窗体‘”按钮
9.1 循序渐进学理论 9.1.1 多窗体程序的设计 1.为应用程序添加和删除窗体 新建一个Delphi项目时,项目中只有一个名为Form1 的窗体,如果要为当前应用程序添加窗体,可通过单 击工具栏上的新建窗体“ ”按钮来实现。如果想 把当前项目中的某窗体去除,可通过单击工具栏上的 移去文件“ ”按钮来实现。 2.窗体间切换 切换方法是单击工具栏上的查看窗体“ ”按钮
〗3.设置主窗体和自动创建窗体 所谓主窗体是指程序开始运行时出现的窗体,新 建一个 Delphi项目时,第一个窗体默认为主窗体,但 主窗体可以重新设定。设定方法是执行【 Project】 【 Options】命令 【例9-1】编写一个调查用户购买商品的应用程序 程序运行时将出现一个调査窗体供用户输入信息,如 图9-5所示。用户输入信息后按【提交】按钮将出现 确认窗体,显示用户输入的信息,如图9-6所示。在 该窗体上,用户按【确认】按钮将退出应用程序,如 果用户按【重填】按钮将又回到图9-5所示的调查窗 体等待用户输入信息
3.设置主窗体和自动创建窗体 所谓主窗体是指程序开始运行时出现的窗体,新 建一个Delphi项目时,第一个窗体默认为主窗体,但 主窗体可以重新设定。设定方法是执行【Project】→ 【Options】命令 。 【例9-1】 编写一个调查用户购买商品的应用程序。 程序运行时将出现一个调查窗体供用户输入信息,如 图9-5所示。用户输入信息后按【提交】按钮将出现 确认窗体,显示用户输入的信息,如图9-6所示。在 该窗体上,用户按【确认】按钮将退出应用程序,如 果用户按【重填】按钮将又回到图9-5所示的调查窗 体等待用户输入信息
调查窗体 回区[确认窗体 回区 姓名 童爱红 您的姓名是:童爱红 购买商品名:P426CPU 您购卖的商品是:P426CPU 数量: 0 您购买的商品数量是:100 提交 重填 图9-5程序运行界面( 图9-6程序运行界面(二)
图9-5 程序运行界面(一) 图9-6 程序运行界面(二)
1.2单文档(SDI)应用程序设计技术 【例9-2】利用 Delph提供的模板创建一个标准 的SD应用程序。 创建步骤如下 (1)执行【File】→【New】→【 Other】命令,将会 出现【 New Item】对话框,在该对话框中选中选项卡 【 Projects】,再选中图标【 SDI Application】,然后 按【OK】按钮。将会出现【选择目录】对话框 (2)在【选择目录】对话框中选择SD应用程序需保 存的路径,然后按【OK】按钮,系统将自动创建 个标准的单文档应用程序
9.1.2 单文档(SDI)应用程序设计技术 【例9-2】利用Delphi提供的模板创建一个标准 的SDI应用程序。 创建步骤如下: (1)执行【File】→【New】→【Other】命令,将会 出现 【New Item】对话框,在该对话框中选中选项卡 【Projects】,再选中图标【SDI Application】,然后 按【OK】按钮。将会出现 【选择目录】对话框。 (2)在【选择目录】对话框中选择SDI应用程序需保 存的路径,然后按【OK】按钮,系统将自动创建一 个标准的单文档应用程序
91.3多文档(MDI)应用程序设计技术 1.多文档应用程序的概念 与单文档应用程序相对应,多文档应用程序是允 许在一个主窗体中创建多个子窗口的应用程序。 MDI应用程序允许用户同时显示多个文档,每个 文档显示在它自己的窗口中。文档或子窗口被包含在 父窗口中,父窗口为应用程序中所有子窗口提供工作 空间。子窗体就是普通窗体。一个应用程序可以包含 许多相似或者不同样式的子窗体。在运行时,子窗体 显示在父窗体工作空间之内,且不能移出父窗体 子窗体最小化时,它的图标显示在父窗体的工作空间 之内,而不是在任务栏中
9.1.3 多文档(MDI)应用程序设计技术 1.多文档应用程序的概念 与单文档应用程序相对应,多文档应用程序是允 许在一个主窗体中创建多个子窗口的应用程序。 MDI应用程序允许用户同时显示多个文档,每个 文档显示在它自己的窗口中。文档或子窗口被包含在 父窗口中,父窗口为应用程序中所有子窗口提供工作 空间。子窗体就是普通窗体。一个应用程序可以包含 许多相似或者不同样式的子窗体。在运行时,子窗体 显示在父窗体工作空间之内,且不能移出父窗体。当 子窗体最小化时,它的图标显示在父窗体的工作空间 之内,而不是在任务栏中
2.通过模板创建MD应用程序 【例9-3】利用 Delphi提供的模板创建一个标准的 MDI应用程序。 应用模板创建MDI应用程序的步骤如下 (1)执行【File】→【New】→【 Other】命令,将会 出现【 New item】对话框,在该对话框中选中选项 卡【 Projects】,再选中图标【 MDI Application】 然后按【遝K】按钮。将会出现【选择目录】对话框。 (2)在【选择目录】对话框中选择MDI应用程序需保存 的路径,然后按【K】按钮,系统将自动创建一个标 准的多文档应用程序
2.通过模板创建MDI应用程序 【例9-3】 利用Delphi提供的模板创建一个标准的 MDI应用程序。 应用模板创建MDI应用程序的步骤如下。 (1)执行【File】→【New】→【Other】命令,将会 出现 【New Item】对话框,在该对话框中选中选项 卡【Projects】,再选中图标【MDI Application】, 然后按【OK】按钮。将会出现 【选择目录】对话框。 (2)在【选择目录】对话框中选择MDI应用程序需保存 的路径,然后按【OK】按钮,系统将自动创建一个标 准的多文档应用程序
3.用户从头开始创建MD应用程序需注 意的几个要点 (1)创建主窗体 MDI应用程序有一个主窗体,用来作为其它 窗体的父窗口。要把某窗体设置为主窗体,需把它的 Formstyle属性值设置为“ fsMDIForm (2)创建子窗体 个MDI应用程序可能有一个或多个不同风格的 子窗口,每一种子窗口均需创建一个子窗体。要创建 子窗体,首先应把窗体添加到应用程序中,然后把它 的 FormStyle属性值设置为“ fsmDiChild3
3.用户从头开始创建MDI应用程序需注 意的几个要点 (1)创建主窗体 一个MDI应用程序有一个主窗体,用来作为其它 窗体的父窗口。要把某窗体设置为主窗体,需把它的 FormStyle属性值设置为“fsMDIForm”。 (2)创建子窗体 一个MDI应用程序可能有一个或多个不同风格的 子窗口,每一种子窗口均需创建一个子窗体。要创建 子窗体,首先应把窗体添加到应用程序中,然后把它 的FormStyle属性值设置为“fsMDIChild”
(3)创建应用程序菜单和菜单融合 为进行菜单融合,需设置窗体的Menu属性和菜单 项的 GroupIndex属性。 如果窗体有多个菜单组件,运行时可通过以下代 码选择当前使用的菜单组件: Form1.Menu:=菜单组件名 Groupindex属性决定出现在菜单条中各菜单项的 位置。 Groupindex属性的缺省值是0,其取值及含义 如下: ①数值越小,菜单的位置越靠左 ②若需替换主菜单中的某一菜单项,则将子菜单 相应菜单项的 Groupindex设为与之相等的值
(3)创建应用程序菜单和菜单融合 为进行菜单融合,需设置窗体的Menu属性和菜单 项的GroupIndex属性。 如果窗体有多个菜单组件,运行时可通过以下代 码选择当前使用的菜单组件: Form1.Menu:=菜单组件名; GroupIndex属性决定出现在菜单条中各菜单项的 位置。GroupIndex属性的缺省值是0,其取值及含义 如下: ①数值越小,菜单的位置越靠左。 ②若需替换主菜单中的某一菜单项,则将子菜单 相应菜单项的GroupIndex设为与之相等的值
③将同一窗体的多个菜单项的 Groupindex设为相 同值,原有的排列顺序在菜单融合时将保存不变 ④若要在菜单融合时插入菜单项,则需要在主菜 单中预留 Grouplndex数值“位置”。如主菜单的两菜 单项数值为0、2,则子菜单中 Grouplndex数值为1的 菜单在融合时将插入其中。 (4)运行时子窗体的创建和关闭 通常在设计时要创建子窗体的模板,在程序执行 时通过子窗体的 Create方法创建子窗体。要关闭子窗 体,可使用子窗体的 Close方法。此时将产生子窗体 的 Foreclose事件,如有以下的 ForeClose事件程序:
③将同一窗体的多个菜单项的GroupIndex设为相 同值,原有的排列顺序在菜单融合时将保存不变。 ④若要在菜单融合时插入菜单项,则需要在主菜 单中预留GroupIndex数值“位置”。如主菜单的两菜 单项数值为0、2,则子菜单中GroupIndex数值为1的 菜单在融合时将插入其中。 (4)运行时子窗体的创建和关闭 通常在设计时要创建子窗体的模板,在程序执行 时通过子窗体的Create方法创建子窗体。要关闭子窗 体,可使用子窗体的Close方法。此时将产生子窗体 的FormClose事件,如有以下的FormClose事件程序: