《管理信息系统程序设计》实验指导书
4) 创建管理窗口
一旦祖先窗口“w_base”设计好了之后,要创建管理得十分简单。下面我们以学生信息管理窗口为例,介绍管创建步骤:
(1) 在PowerBuilder的“Workspace”视图中选中祖先
窗口“w_base”。
(2) 单击鼠标右键,在其快捷菜单中选择“Inherit”
命令(如图2.4所示):新的继承窗口出现在窗口画笔中。
(3) 设置窗口属性:窗口的标题为“学生信息管理”,
“Tag”属性为“student”(其作用在后面介绍)。 (4) 设置数据窗口控件的属性:“DataObject”选为
“dw_student”。
(5) 完成后,学生信息管理窗口的设计界面如图2.5
所示。
(6) 用“w_b_student”(表示该窗口是“w_base”的 图 2.4 创建继承窗口
继承窗口)为窗口名保存当前窗口。
窗口就变理窗口的
图 2.5 学生信息管理窗口的设计界面
注意: 通过继承方式创建的窗口“w_b_student”已经获得了其祖先窗口“w_base”的所有属性、
事件和函数。如果进入窗口“w_b_student”的“Script”视图,可以发现我们在其祖先窗口“w_base”中定义的所有功能函数,如果函数中已经编写了代码,则该函数前的图标将显示为粉红色。如果用户在继承窗口中再次为这类函数编写代码,那么这些代码将取代祖先窗口中编写的代码。 通过继承方式依次创建其它管理窗口,相关设置如表2.2所示。
表 2.2 其它管理窗口的设置
管理窗口 院系信息管理窗口 专业信息管理窗口 课程信息管理窗口 成绩信息管理窗口 用户信息管理窗口 窗口名称 w_b_college w_b_specialty w_b_course w_b_sreport w_b_myuser 对应的数据窗口对象 dw_college dw_specialty dw_course dw_sreport dw_myuser Tag属性 college specialty course sreport myuser - 35 -
《管理信息系统程序设计》实验指导书
提示: 在创建管理窗口后,如果希望对这些窗口进行测试,可以在应用程序对象中先添加如下事
件代码。但请注意,这些只是临时代码。
// 应用程序对象的Open事件代码(临时代码) // 数据库连接语句 SQLCA.DBMS = \SQLCA.AutoCommit = False SQLCA.DBParm = \CONNECT USING SQLCA; // open(w_b_student) 打开要测试的窗口 // 应用程序对象的Close事件代码(临时代码) // 断开数据库连接 DISCONNECT USING SQLCA;
3. 为系统创建主窗口
学生成绩管理系统的主窗口是一个带微帮助的多文档界面窗口,所有的管理窗口都将在主窗口中运行,并且主窗口将关联系统菜单。为了增强应用程序的视觉效果,我们将在主窗口中显示一个关于学生成绩系统的标志,下面首先介绍标志窗口的创建。
1) 创建系统标志窗口
系统标志窗口将显示在主窗口的右下角,并能跟随主窗口的大小变化调整其显示位置。其具体创建过程如下:
(1) 在窗口画笔中新建一个窗口对象。 (2) 设置窗口属性:
? 窗口类型“WindowType”选为“child!”(子窗口)。 ? 将窗口的“Enabled”和“Border”属性设为“False”。 ? 将窗口的“BackColor”属性选为“Application Workspace”(深灰色)。
(3) 在窗口中添加一个静态文本框,其属性设置如下: ? 将“Text”设为“学生成绩管理系统 V1.0”。 ? 将“FaceName”设为“华文彩云”(如果没有该种字体,请读者自行选择其它字体代替)。 ? 将“TextSize”设为“14”。 ? 将“TextColor”选为“Aqua”(浅蓝色)。
? 将“BackColor”选为“Application Workspace”(与窗口背景同色)。 (4) 适当调整窗口的大小,以刚好能够显示静态文本为宜。完成后,系统标志窗口的设计界面如图2.6所示。
图 2.6 系统标志窗口的设计界面
(5) 用“w_logo”为窗口名保存当前窗口。
2) 创建系统主窗口
系统主窗口的创建步骤如下:
(1) 在窗口画笔中新建一个窗口对象。 (2) 设置窗口属性:
- 36 -
《管理信息系统程序设计》实验指导书
? ? ? ? 窗口标题为“学生成绩管理系统”。 窗口类型为“mdihelp!”。 窗口大小适中。
其它属性保持默认设置。
(3) 编写窗口事件代码:
? 编写“Open”事件代码:打开系统标志窗口。
? 编写“Resize”事件代码:保持标志窗口在主窗口中的相对显示位置。 ? 具体代码如下:
// 主窗口的Open事件代码(不是最终代码) // 显示系统标志 opensheet(w_logo, this) // 主窗口的Resize事件代码 if isvalid(w_logo) then // 假如标志窗口打开同步调整其显示位置 w_logo.x = this.width - w_logo.width + 350 w_logo.y = this.height - w_logo.height + 50 end if if this.tag = \ // 表示主窗口的大小已经被调整过了 (4) 用“w_frame”为窗口名保存当前窗口。
注意: 这里可能有读者会问:为什么不将系统标志直接放置在主窗口中,而要专门为其创建一个
窗口?是不是太麻烦了?请大家注意,作为MDI框架的主窗口中不能添加任何控件,否则在使用OpenSheet()函数打开工作窗口时,这些窗口将不会在主窗口中显示出来。有兴趣的读者可以自行测试。 系统主窗口的运行界面如图2.7所示(这是加上菜单以后进行的截图)。
系统标志窗口的显示效果
图 2.7 主窗口运行界面
4. 为系统创建菜单
菜单在Windows应用程序中是绝对不可缺少的,菜单是Window应用程序的一个基本组成部分。好的应用程序在提供功能完善的菜单的同时还会为用户提供与菜单配套的快捷工具栏。一方面,很幸运的是在PowerBuilder的菜单画笔中我们可以很容易地设计出带有快捷工具栏的菜单,但另一方面,要编写出比较完美的菜单控制程序却需要设计者付出一定的汗水。下面我们给出学生创建管理系统的菜单设计过程。
1) 创建菜单项
- 37 -
《管理信息系统程序设计》实验指导书
创建菜单前,设计者应该对菜单项有一个初步规划,充分考虑应用程序中可能进行的操作,并且为这些菜单项分类,将功能相近的放在一起。现在比较流行的Window的菜单都包括“文件”、“窗口”和“帮助”这三个菜单项,考虑到学生成绩管理系统需要对数据记录进行相关操作,这里我们再添加两个菜单项──“浏览”和“管理”,分别控制数据的浏览操作和编辑操作。所以下面我们将要创建菜单含有五个菜单项。
系统菜单的名称为“m_frame”,主要由“文件”(m_file)、“浏览”(m_browse)、“管理”(m_manage)、“窗口”(m_window)和“帮助”(m_help)五个菜单项组成。其中,在“文件”菜单项下含有一个弹出菜单“打开”(m_open)。
系统菜单的具体结构及相关属性设置如下:
- 38 -
《管理信息系统程序设计》实验指导书
请按上述结构在菜单画笔中创建系统菜单。注意:最后还需要将“浏览状态”菜单项的“ToolbarItemDownName”图标为 。完成后,各菜单的运行界面如图2.8所示。
- 39 -