Delphi程序设计实训教程高职 教学课件 ppt 作者 占跃华 第9-10章 第9章

上传人:E**** 文档编号:89346376 上传时间:2019-05-23 格式:PPT 页数:146 大小:4.67MB
返回 下载 相关 举报
Delphi程序设计实训教程高职 教学课件 ppt 作者 占跃华 第9-10章 第9章_第1页
第1页 / 共146页
Delphi程序设计实训教程高职 教学课件 ppt 作者 占跃华 第9-10章 第9章_第2页
第2页 / 共146页
Delphi程序设计实训教程高职 教学课件 ppt 作者 占跃华 第9-10章 第9章_第3页
第3页 / 共146页
Delphi程序设计实训教程高职 教学课件 ppt 作者 占跃华 第9-10章 第9章_第4页
第4页 / 共146页
Delphi程序设计实训教程高职 教学课件 ppt 作者 占跃华 第9-10章 第9章_第5页
第5页 / 共146页
点击查看更多>>
资源描述

《Delphi程序设计实训教程高职 教学课件 ppt 作者 占跃华 第9-10章 第9章》由会员分享,可在线阅读,更多相关《Delphi程序设计实训教程高职 教学课件 ppt 作者 占跃华 第9-10章 第9章(146页珍藏版)》请在金锄头文库上搜索。

1、第9章 系教工参考书借阅管理系统 MDI窗体、菜单及工具栏,9.1 系教工参考书借阅管理系统案例分析 9.2 相关知识点 9.3 系统实现 9.4 案例总结,9.1 系教工参考书借阅管理系统案例分析 在前面的开发中,我们将数据库连接、数据表和数据源等运行期不可见的组件都放在了窗体设计界面中。这样做,虽然调用比较直观,但是却为窗体布局设计带来了麻烦,并且也不利于数据的统一管理,而且前面的应用程序每一个功能都是一个单独的窗体,不像我们平时使用的软件,没有菜单的统一控制,也没有工具栏的快捷操作,使用起来不是很方便。在本章中,我们将引入数据模块窗体、菜单、工具栏、状态栏以及MDI的结构来完善系教工参考

2、书借阅管理系统。,9.2 相 关 知 识 点 本章案例涉及的主要知识点有: 数据模块; MDI窗体; 操作列表与图像列表; 菜单设计; 工具栏; 状态栏。,9.2.1 数据模块 在编写数据应用程序时,有时很多组件、窗体同时访问相同的数据源,如果为每一个组件或者窗体都设置一个数据源将十分浪费时间;而且将数据源等运行期不可见的组件和运行期的可视组件放在一起,往往显得比较杂乱,给设计窗体工作带来了不必要的麻烦。因此,我们引入了数据模块的概念,可以方便地对数据源进行管理。数据模块是用来集中管理数据源的一个窗体,该窗体可在需要的地方随时引入。,创建数据模块的常用方法:单击“File”“New” “Dat

3、a Module”,如图9.1所示。 此时将创建一个新的数据模块,如图9.2所示。数据模块窗体名为“DataModule1”,保存文件名为“DataModule.pas”。在以后的设计中都将通过数据模块窗体名来引用其中的数据组件。从外观上看,数据模块就是一个窗体,在它上面可以放置非可视组件,在模块窗体中创建数据组件对象的方法与在其他窗体中的创建方法相同,可用对象监视器设定这些组件和窗体本身的属性,也可以响应一些事件。,图9.1 创建数据模块,图9.2 新建的数据模块,图9.3 数据模块上单击鼠标右键后弹出的菜单,表9-1 各常用菜单项的含义,图9.4 数据模块及其上面的组件,了解了数据模块,我

4、们就可以使用数据模块存放非可视组件了。例如,我们在新建立的数据模块DataModule1上面放置一个Database组件、两个Table组件以及两个DataSource组件。 数据模块DataModule1如图9.4所示。 五个组件的属性设置如表9-2所示(表格是示意性的,与我们要开发的管理系统无关)。,表9-2 数据模块上五个组件的属性,图9.5 数据模块的对象树状图,在数据模块上单击鼠标右键,选择“View as Text”项,就会自动调出该模块的单元文件: object DataModule1: TDataModule1 OldCreateOrder = False Left = 382

5、 Top = 383 Height = 331 Width = 334 object Database1: TDatabase AliasName = MYMSSQL1 Connected = True DatabaseName = testdb SessionName = Default Left = 16 Top = 16 end,object Table1: TTable DatabaseName = testdb TableName = authors Left = 16 Top = 72 end object Table2: TTable DatabaseName = testdb

6、TableName = jobs Left = 16 Top = 128 end object DataSource1: TDataSource DataSet = Table1 Left = 80 Top = 72,end object DataSource2: TDataSource DataSet = Table2 Left = 80 Top = 128 end end,9.2.2 MDI窗体 MDI是英文Multiple Document Interface的缩写,表示多文档的界面。MDI结构包括一个主窗体和若干个子窗体。可以方便地在各个子窗体之间切换,并且共用一套菜单。最典型的应用M

7、DI结构的软件是Microsoft的Office系列软件。 因此,一个MDI结构至少应包括两种类型的窗体:一个是“父窗体”,其FormStyle属性为fsMDIForm;另一个是“子窗体”,其FormStyle属性为fsMDIChild。 在Delphi中实现MDI并不复杂,因为Delphi已经把所有与实现MDI有关的特性集成于TForm类中,通过对TForm类的属性和方法的设置及调用可开发功能强大的MDI程序。,1建立MDI父窗体 每个MDI结构都有其父窗体,子窗体只能显示在父窗体中。父窗体还能控制子窗体的激活、排列和关闭等操作。一个MDI结构只能有一个父窗体,但可以有多个子窗体,子窗体的类

8、型可以是不同的。 可以把项目中任意一个窗体的FormStyle属性指定为fsMDIForm。但是,如果没有同时把这个窗体指定为程序的主窗体,编译时将出现错误信息。默认的主窗体是在程序中创建的第一个窗体。也就是说,如果不是在程序中创建的第一个窗体,则一定要先指定为主窗体。这里我们把Form2指定为主窗体,然后设置Form2的FormStyle属性为fsMDIForm,如图9.6所示。这样我们就设定父窗体为Form2。,图9.6 设置主窗体的FormStyle属性,2建立子窗体 首先要在项目中创建一个新的窗体,单击“File”“New Form”或直接在工具栏上单击“New Form”按钮。然后将

9、对象监视器中新窗体的FormStyle属性指定为fsMDIChild。 MDI子窗体都有一些公共的属性和功能。有时,为了简化设置,所有其他的MDI子窗体都从一个共同的MDI子窗体继承而来。 如MDI子窗体的的关闭方式默认为缩小而非关闭,即单击子窗体右上角的关闭按钮时是最小化而非被关闭。在此我们希望所有的子窗体的关闭方式是真正关闭而非最小化,所以我们可以创建一个共同的MDI子窗体,来实现这种关闭方式。,首先新建一个窗体,并设置其“Name”属性为“MDIChild”,对应文件名为“childwin.pas”,然后设置其FormStyle属性为fsMDIChild。接着在该窗体的Close事件处理

10、代码中加入如下代码: procedure TMDIChild.FormClose(Sender: TObject); begin Action:=caFree; /关闭窗体并释放空间 end; 由于其他的子窗体是从“MDIChild”窗体继承而来的,因此要将在其他子窗体代码中(假设该子窗体名为Form1)的定义类型下的TForm1 = class(TForm)语句修改为: TForm1=class(TMDIChild),3Form中有关MDI窗体的其他属性和方法 ActiveMDIChild属性 该属性记录当前聚焦的子窗体。它是只读的属性,因而不能通过对它赋值的方法改变当前的聚焦子窗体。 MD

11、IChildCount属性 该属性记录子窗体的个数。, MDIChildren属性 该属性保存了父窗体中的所有子窗体类,它是一个数组属性,其下标为整数类型,表示各子窗体的索引,元素类型为TForm,记录着子窗体的类实例。在MDIChildren数组中,子窗体的顺序与其生成的顺序正好相反,即MDIChildren0返回最后生成的子窗体类,而MDIChildrenMDIChildCount-1则返回第一个生成的子窗体类。 ArrangeIcons方法 该方法用于排列最小化的子窗体图标,使得它们整齐排列且不互相重叠,如图9.7所示。,图9.7 MDI窗体的ArrangeIcons方法, Cascad

12、e方法 该方法用于排列MDI子窗体,让所有的子窗体重叠显示,后面的窗体都只能见到其标题栏,如图9.8所示。,图9.8 MDI窗体的Cascade方法,9.2.3 操作列表与图像列表 1操作列表(ActionList) 我们使用的大多数软件都具有下拉菜单、弹出菜单、工具栏和快捷键。通过下拉菜单、弹出菜单、工具栏和快捷键可以执行同一个功能。如在Microsoft Word中对文本的复制,可以在下拉菜单上单击“编辑”“复制”命令;可以单击鼠标右键,在弹出的菜单中单击“复制”命令;可以在工具栏上单击“复制”按钮;还可以使用快捷键“Ctrl+C”等。它们都是执行同一个操作,只是我们选择的操作方式不同而已

13、。在这种情况下,如果我们为每一种操作方式都编写一段程序,只会增加程序响应事件的代码,且没有太大的必要。,因此,我们引入了操作列表的概念。操作列表(ActionList)类似于一个个子程序的有序组合,可以将菜单和按钮的Action属性绑定到操作列表中的某个操作。当单击菜单或按钮时就执行该操作。 Delphi为我们提供了多类标准的操作,使用这些操作可以大大简化编程。操作列表位于组件面板Standard选项卡上,如图9.9所示。,图9.9 操作列表,在窗体上创建一个操作列表对象,然后双击该对象,会出现如图9.10所示的对话框。 在空白处单击鼠标右键,在弹出菜单中有两项,即“New Action”和“

14、New Standard Action.”。前一项用于用户自定义操作,后一项用于引用标准操作。在此,我们要引用标准操作,所以选择“New Standard Action.”,则出现如图9.11所示的对话框。,图9.10 操作列表编辑对话框,图9.11 标准操作对话框,2图像列表(ImageList) 图像列表用于管理菜单项和工具栏的图标。图像列表是一些图像的集合,可以通过索引或者关键字引用该集合中的每个对象。图像列表不能独立使用,它只是向其他组件提供图像的容器。图像列表组件位于组件面板Win32选项卡上,如图9.12所示。,图9.12 图像列表,图9.13 图像列表对话框,9.2.4 菜单 1

15、菜单的概念 面向用户的应用程序一般都少不了菜单,在菜单中几乎集合了软件的所有功能,并能按照类型将其系统组织起来,呈现在用户面前,使用起来非常方便。 菜单是应用程序为用户访问程序提供的快捷方式,是不可缺少的组件。在Delphi中,菜单被封装在TMainMenu(主菜单)与TPopupMenu(弹出式菜单)类中。合理地设计菜单,可以将应用程序中的各种命令进行分类组织,从而避免将多个命令放置在窗体上造成操作界面杂乱。,一般菜单分为两级结构。窗体标题栏下显示的是菜单栏,菜单栏包含若干主菜单选项,单击每一个主菜单选项可打开一个下拉菜单,其中包含若干菜单命令。有些菜单命令还有级联菜单,以级联的方式显示在该菜单命令的右边,依次排列,直至最后一级级联菜单。带有级联菜单的菜单命令通常在命令最右边有一个向右的三角符号。Windows资源管理器的“查看”菜单结构如图9.14所示。,图9.14 主菜单结构,图9.15 弹出式菜单结构,在我们设计菜单时,级联菜单级联的级数最好不要超过4级。如果不愿使用级联菜单,可将菜单中一些菜单命令归纳为一组,并在菜单命令组之间用分隔线来分隔。 当某个菜单命令项被选中后,一般来说其作用有如下3种: (1) 执行命令:用于执行某操作的菜单命令,它们没有特殊的指示符号。 (2) 设置状态:用于设置或取消设置的菜单

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号