




已阅读5页,还剩164页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
此文档收集于网络,如有侵权,请联系网站删除第一章 什么是PowerBuilder在开始学习PowerBuilder之前,首先要弄清楚的问题是什么是PowerBuilder,它是用来干什么的,它的特点又是什么。只有知道了PowerBuilder的功能和特点所在,我们才能知道什么时候应该选用PowerBuilder作为我们的应用程序开发工具。1.1 什么是PowerBuilder我们知道,数据库应用是当前计算机应用的一个非常重要的方面,而在目前的数据库应用技术中普遍采用的就是客户机/服务器体系结构,在这种体系结构中,所有的数据和数据库管理系统都在服务器上,客户机通过采用标准的SQL语句等方式来访问服务器上数据库中的数据。由于这种体系结构把数据和对数据的管理都统一放在了服务器上。就保证了数据的安全性和完整性,同时也可以充分利用服务器高性能的特点。正因为客户机/服务器体系结构的这些优点,因而得到了非常广泛的应用。PowerBuilder是著名的数据库应用开发工具生产厂商PowerSoft公司推出的产品(PowerSoft现已被数据库厂商Sybase所收购),它完全按照客户机/服务器体系结构研制设计,在客户机/服务器结构中,它使用在客户机中,作为数据库应用程序的开发工具而存在。由于PowerBuilder采用了面向对象和可视化技术,提供可视化的应用开发环境,使得我们利用PowerBuilder,可以方便快捷地开发出利用后台服务器中的数据和数据库管理系统的数据库应用程序。在当前,网络技术迅速发展,随之发展的还有OLE,OCX,跨平台等技术,而在PowerBuilder的最新版PowerBuilder 6.0中提供了对这些技术的全面支持。总之在数据库开发工具领域,PowerBuilder是其中非常优秀的一个,利用它我们可以开发出功能强大的数据库应用程序。1.2 PowerBuilder的特点PowerBuilder提供了对目前流行的大多数关系数据库管理系统的支持,由于在PowerBuilder的应用程序中对数据库访问的部分一般采用国际化标准数据库查询语言SQL,使得用PowerBuilder开发的应用程序可以不做修改或者只做少量的修改就可以在不同的后台数据库管理系统上使用。也就是说用PowerBuilder开发的应用程序是独立于服务器上的数据库管理系统的。和大多数的WINDOWS应用程序一样,PowerBuilder也是事件驱动工作方式。在这种工作方式中,程序的运行没有固定的流程,程序中的代码也是为各种可能发生的事件编写的,当程序开始运行之后,它就可以接受来自系统,用户或者其它应用程序触发的事件,然后执行相应的事件代码。事件驱动的工作方式与面向对象技术是紧密相关的,在PowerBuilder应用程序中,接受发生的事件的往往就是程序界面中的各种可视化对象。PowerBuilder是一种面向对象的开发工具,各种WINDOWS应用程序中常见的窗口、菜单、控件等在PowerBuilder中都是一个个的对象。在PowerBuilder中我们还可以创建自己的用户对象。特别要指出的是PowerBuilder提供了对面向对象方法中的各种技术的全面支持,我们可以利用面向对象方法中的对象的封装性、继承性、多态性等特点使得我们开发的应用程序具有极大的可重用性和可扩展性,而这一点正是软件工程中对应用程序所提出的重要目标。在当前,由于网络技术的发展,许多种不同的操作系统平台在INTERNET网上同时被使用,这对开发的应用程序的跨平台性提出了更高的要求,而PowerBuilder就提供了良好的跨平台性,比如在PowerBuilder中,利用WINDOWS平台开发的各种对象可以方便地应用到UNIX平台中,因为PowerBuilder支持对象的跨平台性。这样使得把应用程序从一个平台移到另一个平台变得并不复杂。为了给用户提供各个方面的支持,PowerBuilder具有自己的编程语言POWERSCRIPT,这个语言除了提供基本的流程控制语句,还提供了几百个函数来操纵各种对象和提供诸如DDE,OLE等方面的支持。此外我们还可以定义自己的函数,处理特定的事件。学习PowerBuilder时相当一部分的时间就是用来了解和熟悉PowerBuilder提供的各种函数。PowerBuilder一个很大的特点就是提出了数据窗口对象的概念。数据窗口对象也是PowerBuilder中的一种对象类型,与其它对象不同的是数据窗口对象是专门为了访问后台的数据库服务的,在数据窗口对象中我们定义了数据的来源和数据的显示风格,这样在应用程序中我们就可以把精力完全放在程序的运行流程控制上,而不用关心具体数据的来源,因为我们在数据窗口对象中已经定义好了数据的来源。如果需要使用数据库中不同的数据也只要对数据窗口对象进行修改就可以了。特别要指出的是PowerBuilder在数据窗口对象中提供了丰富的数据显示方式,可以满足各种不同的需要。在PowerBuilder较新的版本中提供了基础类库PFC,它为应用程序的开发提供了许多可重用的预定义类和对象,利用基本类库PFC可以快速开发出高质量重用性好的应用程序。真正发挥面向对象编程的巨大威力。最后要指出的是PowerBuilder有三个不同的版本,分别为DESKTOP型,PROFESSIONAL型,和ENTERPRISE型,DESKTOP型是为个人使用的桌面型应用程序,在这里可以利用PowerBuilder内置的数据库管理系统SYBASE SQL ANYWHERE来创建和使用本地数据库,为个人的应用服务;PROFESSIONAL型的PowerBuilder最重要的一点就是提供了对MICROSOFT ODBC(数据库标准连接接口)的支持,在PROFESSIONAL版本中我们就可以使用PowerBuilder的继承,多态等绝大多数特性;在ENTERPRISE版本中最重要的一点就是提供了对开发大型的数据库应用程序的全面的支持,提供了开发大型应用程序的许多辅助的工具,比如C+ CLASS BUILDER等。1.3 PowerBuilder与数据库的连接数据库前端开发工具与后台数据库管理系统的连接方式是一个很重要的课题。PowerBuilder提供了两种访问后台数据库的方式,一种是通过ODBC标准接口的方式,第二种是通过专用的接口与后台的数据库相连。ODBC的中文名字是开放式数据库连接,它是微软公司提出的数据库连接标准,使用ODBC方式连接数据库的第一步是创建数据源,比如我们可以利用WINDOWS下控制面板中的“32 BIT ODBC”选项来创建驱动某种数据库的数据源,创建好数据源之后,我们就可以在本地计算机中利用定义好的数据源存取后台数据库中的数据了。我们还可以通过专用接口同后台的数据库相连,由于专用接口是针对特定的后台数据库管理系统而设计,因此这种方式存取数据的速度要比采用ODBC方式存取数据的速度要快一些,如果我们的应用程序只是针对特定类型的后台数据库,当然是采用专用接口访问后台数据更快一些。关于PowerBuilder的基本概念和特点就介绍到这,接下来我们就要真正进入到PowerBuilder的精彩世界了。第二章 PowerBuilder 入门2.1 创建数据库数据库应用程序的操作对象是数据库里的数据,应用程序的目的就是给用户提供一个良好的界面,使得用户能够方便有效地使用数据库中的数据,可见数据库是应用程序工作的基础,所以我们就先了解数据库的创建。PowerBuilder作为一种数据库应用程序的开发工具,一般访问的是后台服务器上的大型数据库。但是PowerBuilder自身也带有本地的数据库管理系统SYBASE SQL ANYWHERE,利用它我们可以创建本地的数据库,由于利用ODBC接口来实现应用程序和远程数据库或本地数据库的连接在操作上并没有太大的区别,下面我们利用PowerBuilder自带的数据库管理系统SYBASE SQL ANYWHERE来创建本地数据库。双击屏幕上的PowerBuilder 5.0图标,就可以启动PowerBuilder,图2-1显示的就是PowerBuilder的初始界面,可以看出,PowerBuilder的界面同其它WINDOWS 应用程序的界面是类似的,也是由菜单、工具条、工作区和状态条等部件组成。PowerBuilder工具条上的一个个图标被称为画板按钮,按下这些按钮可以打开相应的画板。利用这些画板我们可以创建各种对象,应用到PowerBuilder开发的应用程序中去。如果你对某个画板按钮的功能不太清楚,将鼠标放在这个按钮上不动,系统会在画板按钮的旁边显示一条简短的语句,说明此画板按钮的功能,另外也可以从按钮上的图标来识别它的功能。图2-12.1.1 创建新的数据库创建一个新的数据库的过程如下:1) 单击工具条上的DATABASE画板按钮,利用它来创建新的数据库,单击后屏幕上弹出一个标题为SELECT TABLES的对话框(图2-2),让我们选择表,这些表是系统当前所连接的数据库中的表,因为我们现在是要创建新的数据库,所以单击对话框的CANCEL按钮关闭这个对话框,接着屏幕上显示的是一个完整的数据库画板窗口,窗口的标题显示的是系统当前所连接的数据库的名字。图2-22) 单击FILE菜单,选择其中的CREATE DATABASE菜单项,屏幕上弹出了CREATE LOCAL DATABASE对话框,利用这个对话框我们就可以创建本地数据库。首先单击BROWSE按钮弹出一个对话框,用于选择数据库存放的目录和数据库的名字,这里不妨设定D:DATABASE目录为数据库的存放路径。我们要创建的是一个通讯录管理程序,所以在对话框的文件名一栏中给它起名为TELEBOOK,然后单击保存按钮关闭BROWSE命令所弹出的对话框。注意到现在的对话框的DATABASE NAME一栏中显示的就是我们刚刚设置的数据库的完整路径(图2-3)。对话框中还有很重要的USER ID、PASSWORD等项,它们是用来设置访问此数据库所需要的帐号、口令等信息,以防止对数据库的非法访问,维护数据库的安全性。3)单击OK按钮,PowerBuilder的本地数据库管理系统就会自动生成SQL语句,在指定的目录D:DATABASE下生成一个名为TELEBOOK的本地数据库,并以文件名TELEBOOK.DB保存在磁盘上。观察一下数据库窗口的标题,可以发现系统已经自动把新创建的TELEBOOK数据库作为系统当前所连接的数据库(图2-4)。图2-32.1.2 向数据库中添加表数据库是一个容器,其中存放的是一个个的表。接下来我们就来为刚建的TELEBOOK数据库创建表,创建表的过程如下:1) 单击工具条上的CREATE TABLE画板按钮,就弹出了标题为CREATE TABLE的对话框(图2-5),利用这个窗口我们就可以生成定义一张表所需要的各项信息。图2-52) 一个表是由很多的字段组成的,接下来开始定义表的各个字段了。注意COLUMN NAME一项,它是用来输入表的字段的名字。这里输入第一个字段的名字为NUMBER,代表一个人在通讯录中的编号。单击DATA TYPE一栏的下拉箭头,从中选择当前字段的数据类型,不妨把NUMBER字段设置为INTEGER整型。这时WIDTH和DEC两项是灰色的,这表示对于整型字段,数据宽度和小数点后的数据宽度两项是不可操作的。单击NULL一栏的下拉列表框,弹出YES 和NO两项,是用来选择当前的字段是否可以取空值,也就是在以后的实际记录中这一个字段是否可以不往里面输入数据,因为通讯录中的每一条记录都必须有一个编号,所以在NULL项中选择NO,表示这个字段不能取空值。注意到对话框的下部还有很多项用来设置当前字段的扩展信息,要指出的是,对于具体的某个字段,只要对确实需要定义和修改的属性进行修改,其它的属性采用系统所给定的缺省值就可以了。此外有些属性我们等到表建立好以后再重新定义。注意扩展属性中的HEADER项,系统已经设置了缺省值NUMBER,这里把它修改为“编号”,同样地把LABEL项中的缺省值修改为“编号”,上面定义的这两项是设置这个表将来通过数据窗口等途径显示出来时的字段题头和标签。这样就定义好了NUMBER字段的一些基本属性(图2-6)。3) 单击窗口上部中NUMBER字段的最后一项DEFAULT激活它,然后按TAB键,窗口中又出现一行让我们定义表的第二个字段的有关属性,这里定义第二个字段的字段名为NAME,代表记录中一个人的名字,数据类型选择为CHAR字符型。最大宽度WIDTH不妨设置为20,显然这个字段也应该是图(2-6)非空的,然后把这个字段的题头和标签都设定为“名字”。4) 用类似的方法接着定义第三个字段的名字为HOME-ADDRESS,代表家庭地址。它的数据类型为CHAR型,宽度为50,因为在通讯录中可能暂时不知道某个人的家庭地址,所以这个字段可以是空的,即NULL栏选择为YES,字段的题头和标签都定义为“家庭地址”。接着定义第四个字段的名字为POSTCODE,代表邮政编码,它的数据类型设为NUMERIC,即数值型,宽度为6,DEC一栏为数值的小数点后的位数,这里设为0,NULL设项为YES,题头和标签设置为“邮政编码”,第五个字段的名字定义为WORK-ADDRESS,代表工作单位的地址,数据类型也为CHAR型,宽度为50,NULL项为YES,题头和标签设置为“工作单位”,第六个字段的名字设定为TELEPHONE,代表电话号码,数据类型设置为CHAR 型,数据宽度为15,NULL项为YES,题头和标签定为“电话号码”,最后一个字段给它起名为STATUS,代表一个人的目前状况,这个字段的值可能会因为人的不同,有时很长,有时很短,有时甚至可以为空值,所以定义它的数据类型为VARCHAR型,即变宽字符型,它的最大长度设置为256,NULL项为YES,题头和标签设为“目前状况”,这样我们就完成了对一个表的基本结构的设置工作(图2-7)。图2-75)下一步把表起个名字保存起来,单击工具条上的SAVE CHANGES按钮,系统弹出一个对话框让我们输入表的名字(图2-8),在TABLE NAME一栏中给它起名为MYTELEBOOK,单击OK按钮关闭对话框。注意到这时窗口的标题已经从UNTITLED变成了MYTELEBOOK,表示名为MYTELEBOOK的表已经成功地创建了。图2-82.1.3 定义表的关键字 对于一个表来说,一般总需要定义关键字,关键字所在字段的值对于表中不同的记录一定是不相同的,关键字是维护数据库的完整性和正确性的重要手段。定义表MYTELEBOOK的关键字的过程如下:1) 单击工具条上的PROPERTIES按钮,系统弹出一个对话框用来选择和设置表的各种属性,在对话框中单击PRIMARY KEY标签,来为表定义关键字,单击对话框下部所显示的表的NUMBER字段,可以发现NUMBER字段出现在对话框上部的KEY COLUMNS一栏中(图2-9),表示字段NUMBER已经成为关键字的组成部分,这里仅选择NUMBER字段作为表的关键字,单击OK按钮关闭对话框,MYTELEBOOK的关键字已经成功地设置为NUMBER字段。图2-92) 单击工具条上的CLOSE按钮,系统弹出一个对话框询问是否保存对表的修改,选择“是”后对话框和CREATE TABLE窗口都被关闭,一个标题为MYTELEBOOK的表出现在DATABASE窗口中,注意到有一个上面画有钥匙图形的小图标指向NUMBER字段,表明NUMBER是当前这个表的关键字段。2.1.4 定义字段的扩展属性 接下来我们根据需要来定义表MYTELEBOOK中的一些字段的某些扩展属性。定义NUMBER字段扩展属性的过程如下:1) 鼠标放在NUMBER字段上,单击鼠标右键,然后单击弹出的菜单的PROPERTIES菜单项,屏幕上弹出一个用来定义字段的扩展属性的对话框,对于NUMBER字段,我们想要设置的扩展属性是VALIDATION属性,也就是设置NUMBER字段的有效性检查规则,有效性检查规则的作用是,如果输入记录的NUMBER字段的值通不过这个有效性规则检查时,就拒绝把这条记录放进表中。2) 单击VALIDATION标签,VALIDATION RULE一栏用来选择一条有效性规则,因为目前还没有可用的规则,所以这一栏目前是空的。单击NEW按钮,屏幕上弹出一个对话框用来创建一条新规则,在NAME框中输入新规则的名字为NUMBER-VALID,单击NUMBER按钮,可以发现“NUMBER”出现在RULE DEFINITION文本框中,它代表字段NUMBER的值,我们接着在这个文本框中输入文本“0 and NUMBER1000”(图2-10)。图2-103) 单击OK按钮关闭创建规则对话框,可以发现字段属性定义对话框的VALIDATION RULE一栏中已经有了我们刚刚定义的规则NUMBER-VALID,选中这条规则,单击APPLY按钮后这条规则就成为NUMBER字段的有效性检查规则。单击OK按钮关闭对话框。NUMBER字段的有效性检查规则就建立好了。可以用鼠标右键单击NUMBER字段,选择DEFINITION菜单,观察弹出的对话框中的VALIDATION一栏,可以看到其中出现的就是刚刚定义的规则(图2-11)。图2-11定义POSTCODE字段扩展属性的过程如下:1) 用鼠标右键单击POSTCODE字段,单击PROPERTIES菜单后打开定义POSTCODE字段扩展属性的对话框。单击DISPLAY标签就可以为POSTCODE字段定义显示样式,也就是通过数据窗口等方式进行操作时数据的显示风格,2) 单击NEW按钮开始定义一个新的显示风格,在弹出的对话框中给这个显示样式起名为POSTCODE-DISPLAY,在格式FORMAT 一栏中输入“000000”,格式中的“0”是有特殊含义的,它表示不可缺少的一个数字,如果没有输入这个数字的话,就会以“0”来补充,因为邮政编码是固定的六位数,所以这里定义显示格式为六个零,这样就可以规范化地显示数据。TEST VALUE 栏用来对显示格式进行测试,例如输入28后单击TEST按钮,可以发现显示出来的测试值为“000028”,系统自动补充了四个零(图2-12)。图2-123) 单击OK按钮关闭创建显示风格对话框。可以发现这时定义扩展属性对话框中的DISPLAY FORMAT一栏中多了一个我们刚刚定义的显示风格POSTCODE-DISPLAY,选中它,单击APPLY按钮把它应用到POSTCODE字段上,最后单击OK按钮关闭对话框,就完成了POSTCODE字段显示风格的设置。编辑样式就是用户编辑数据时数据的显示格式,对输入时有特殊格式要求的数据定义编辑样式是一种好的习惯。定义TELEPHONE字段的扩展属性的过程如下:1 ) 右键单击TELEPHONE字段后选择PROPERTIES菜单,在弹出的对话框中选择EDIT STYLE标签,2) 单击NEW按钮开始定义编辑样式,在弹出的对话框的NAME栏中输入编辑样式的名字为TELEPHONE-EDIT,STYLE栏中选择样式为EDITMASK,即编辑屏蔽风格,利用这种样式中的特殊字符可以决定在编辑的时候以什么样的格式显示什么样的字符,以及什么样的输入可以被接受。电话号码的样式一般都是前面是区号,然后是一条短横线,然后是具体的本地号码,所以在MASK一栏中输入如下字符串作为编辑格式“(#)-#”,格式中的括弧和短横线都会事先显示在要输入记录的相应字段中,事实上观察对话框的TEST一栏就可以发现已经显示了括弧和横线。格式中的“#”代表一个数字,在括弧中有四个“#”,表示最多可以输入四个数字作为区号。类似地,格式最后的八个“#”表示本地号码最多可以有八位。作为试验,在TEST栏的括弧中输入“025”,然后在横线后输入“7980960”,可以看出输入这样的一个南京地区的电话号码是可以的(图2-13)。图2-133) 单击OK按钮关闭创建编辑风格对话框,可以看出在原来的设定扩展属性对话框中多了我们刚刚创建的编辑样式TELEPHONE-EDIT,选中它后单击APPLY按钮把它应用到TELEPHONE字段上,最后单击OK按钮关闭对话框,就完成了TELEPHONE字段编辑样式的设置。2.1.5 向表中添加记录通过上面的操作我们已经成功地创建了数据库TELEBOOK和数据库中的一张表MYTELEBOOK,并且定义了表的字段的基本属性和一些字段的扩展属性。这时候的表还只是一个有了结构的空表,接下来要做的事情是往这个刚创建的表中加入一些数据,也就是记录,以后应用程序操作的对象一般都是表中的数据。往一个表中加入数据有两种基本的方法,先介绍第一种方法,添加记录的过程如下:1) 单击工具条上的DATA MANIPULATION(GRID)画板按钮,系统弹出了DATA MANIPULATION窗口,注意到在窗口的上部显示的就是记录的格式,但每个字段不是用字段本身的名字,而是用字段扩展属性中的HEADER项,也就是题头来代表这个字段,这样做的好处是记录格式看起来比较直观清楚。通过DATA MANIPULATION窗口就可以输入数据到表中。2) 单击工具条上的INSER ROW按钮,窗口上出现一个空行用来输入一条记录,回忆前面我们定义了NUMBER字段的有效性检查规则,要求数据必须在1和1000之间,试着在编号栏中输入2000,然后用鼠标单击其它的字段,这时系统会弹出一个对话框告诉我们刚才输入到编号栏中的数据没有通过有效性检查(图2-14),单击确定后系统把输入焦点仍旧放在编号栏中让我们重新输入一个有效的数据。图2-143) 输入编号为1,然后用TAB切换到姓名字段,输入姓名为“冯飞”,家庭地址输入为“南京市凤凰西街220号”,邮政编码输入为“210019”,工作单位输入为“南京市新街口百货商场”,电话号码输入目前状况输入为“目前在复习英语,准备参加托福考试”,这样我们就输入了一条完整的记录到表中。4)再次单击工具条上的INSERT ROW按钮,窗口上又出现一条空记录用来输入数据,用类似的方法依次输入记录的各个字段的值依次为“2”,“李明”,“杭州市浙江大学200号信箱”,“310027”,“浙江大学数学系高等数学教研室”,,“担任数学系副主任和总支副书记”,输好第二条记录后用同样的方法再输入第三条记录各项依次为“3”,“张玲”,“宁波市大榭开发区”,“330020”,“宁波市大榭开发区土地管理局”,,“担任土地管理局局长”,这样我们就完成了三条记录的录入工作,要注意的是此时输入的记录并没有真正存放到磁盘上去,而是暂时放在缓冲区中,单击工具条上的SAVE CHANGES按钮,这样就把刚才输入的记录真正存放到了磁盘上相应的表中(图2-15)。接下来介绍另外的一种数据输入方法,输入数据的过程如下:1) 单击工具条上的DB ADMINISTRATION画板按钮,弹出一个标题为DATABASE ADMINISTRATION的可编辑窗口,在这个窗口中可以输入SQL语句来往表中添加记录,不妨在其中输入一条标准的SQL语句为“INSERT INTO MYTELEBOOK VALUES(4,王晓,安徽天长市建设东路30号,239300,安徽天长市水泥厂,05507545450,担任水泥厂厂长);”(图2-16)。2) 单击工具栏上的EXECUTE按钮,系统没有给出任何的反应,这表示INSERT语句已经提交给数据库管理系统并被成功地执行,如果输入的SQL语句有错的话,比如我们把上面INSERT语句括号中应该是整数的NUMBER项用一个字符串代替,然后单击工具条上的EXECUTE按钮,系统会弹出对话框提醒我们刚才输入的SQL语句有错,应该修改后再重新提交(图2-17)。关闭DATABASE ADMINISTRATION窗口,单击工具条上的DATA MANIPULATION(GRID)画板按钮,弹出的窗口中的有一条记录就是刚才用SQL语句输入的记录(图2-18)。图2-15图2-16图2-17图2-18到目前为止,我们成功地创建了一个数据库和它的一个表,表中有四条记录,当然你可以用本节介绍的方法往表中添加更多的记录。接下来将创建POWRBUILDER应用程序不可缺少的组成部分应用对象。2.2 创建应用对象应用对象是PowerBuilder应用程序的基础,通过它可以设置有关应用程序的全局信息,例如应用程序的名字,程序使用的图标,程序中文本的字体,应用程序所在的对象库等各种信息。在以后将详细介绍如何设置应用程序的这类信息。要记住的很重要的一点是应用对象是PowerBuilder应用程序执行时的入口点。下面我们就开始创建一个新的应用对象。1)单击工具条上的APPLICATION画板按钮,系统弹出一个标题为APPLICATION的窗口,每次启动PowerBuilder后系统都会自动打开前一次的应用对象。下面我们将要创建一个新的应用对象。2) 打开FILE菜单,单击其中的NEW菜单项,屏幕上弹出一个名为SELECT NEW APPLICATION LIBRARY的对话框,用于设置把应用对象保存到哪个库文件中。应用程序对象库实际上是一个特殊格式的文件,用于存放应用程序所用到的各种对象。应用程序本身作为一个对象自然要放到对象库中。这里我们创建一个新的对象库,首先设置对象库的存放路径为D:DATABASE,在文件名一栏中输入对象库的名字为TELEPHONE-BOOK(图2-19),然后单击保存按钮。图2-193)系统又弹出一个名为SAVE APPLICATION的对话框,用于给应用对象自身起一个名字,为方便记忆,同样给它起名为TELEPHONE-BOOK,对话框下部的注解栏用于输入有关这个应用对象的一些信息,以后重新打开这个应用对象时可以有一个大概的了解。4)单击OK按钮,系统就创建了一个名为TELEPHONE-BOOK的应用对象和它所在的名为TELEPHONE-BOOK.PBL的对象库。系统弹出一个对话框询问是否需要由PowerBuilder为我们生成一个应用程序的模板(图2-20),所谓应用程序的模板就是应用程序基本框架,这个框架中含有一些应用程序可能用到的基本对象,利用这个框架可以更好更快地开发应用程序。当然也可以不用这个模板而直接编写应用程序,这里选择“否”不让系统生成应用程序的基本框架,而是由我们自己一步步创建应用程序,以使你对PowerBuilder应用程序的开发过程有一个更深刻的了解。图2-205)单击工具条上的LIBRARY画板按钮,可以发现创建的应用对象TELEPHONE-BOOK出现在我们刚刚创建的对象库TELEPHONE-BOOK.PBL中(图2-21)。图2-212.3 创建第一个窗口窗口在WINDOWS应用程序中是一个极为重要的概念,它提供了应用程序同用户之间交互的非常直观的界面,目前许多的WINDOWS下的开发工具都提供了可视化开发窗口对象的方法,使得开发一个窗口对象变得非常容易,PowerBuilder也不例外,下面就开始创建这里的应用程序中要用到的两个窗口。首先来创建第一个窗口对象,创建一个窗口的一般步骤如下:单击工具条上的WINDOW画板按钮,系统弹出一个题为SELECT WINDOW的对话框,用来选择当前对象库中已存在的窗口对象(图2-22)。图2-22单击对话框的NEW按钮来创建一个新的窗口对象。单击后屏幕上弹出一个题为WINDOW的窗口,接下来就可以往这个窗口中添加需要的控件了。单击PAINTERBAR工具条上的控件画板按钮,系统弹出一个方框,其中包含有各种各样的可用控件(图2-23),选中其中的一个,在窗口上单击,就可以把选中的控件放到窗口中。这里首先从方框中选择STATICTEXT控件,然后在窗口中单击,就会发现一个静态文本框空间就出现在窗口中,再次单击工具条上的控件画板按钮把第二个静态文本框控件放到窗口中,用类似的方法把一个SINGLE LINE EDIT控件,也就是单行编辑框放到窗口中,最后再把一个COMMAND BUTTON控件,也就是命令按钮放到窗口中。图2-23为了使窗口更美观一点,可以对已放入窗口中的控件调整位置和改变一些特性,单击第一个静态文本框选中它,然后放到合适的地方,在上面单击右键,在弹出的菜单中选择PROPERTIES菜单项,系统弹出一个对话框用来设置这个控件的属性(图2-24),NAME栏显示的是控件的名字,这个名字是用在以后编写的脚本中,系统已经设置了一个缺省的名字,这里不作修改,接下来的TEXT一栏是用来设置显示在静态文本框中的文本,这里把它改为“个人通讯录管理系统”,设好后单击OK按钮,用类似的方法把调整另外一个静态编辑框的位置,并把上面的文字改为“请输入你的使用口令:”,然后激活单行编辑框,调整好它的位置后把鼠标放在它的右边框上等鼠标变成水平双箭头形状的时候单击并拖动鼠标,把编辑框拉长一些;最后调整命令按钮的位置并把上面的标题修改为“OK”。用鼠标右键单击窗口中没有控件的空白区域,然后在弹出的菜单中选择PROPERTIES菜单项,在弹出的对话框中把TITLE一栏改为“个人通讯录”,然后单击“OK”按钮关闭对话框。图2-24单击工具条上的PREVIEW按钮可以预览设计好的窗口(图2-25),窗口的标题就是我们刚在窗口的TITLE属性中输入的值。关闭预览窗口,这样我们就定义好了第一个窗口对象,需要给它起一个名字,单击FILE菜单的SAVE菜单项,弹出一个题为SAVE WINDOW的对话框,在WINDOWS一栏中给窗口起一个名字为TELEPHONE-WINDOW1,这个明字将用于以后的程序中,输好后单击OK按钮,可以发现窗口的标题已变成刚输入的名字,到此为止第一个窗口就设计好了。图2-252.4 创建数据窗口对象在创建第二个窗口对象之前,我们需要先来创建两个数据窗口对象。数据窗口对象是PowerBuilder的一大特色,它为我们操作数据库中的数据提供了一种直观有效的手段,利用它可以方便地联结数据库,以自己喜欢的方式显示数据库中的数据以及修改数据库。下面就开始创建第一个数据窗口对象。单击工具条上的DATAWINDOW画板按钮,系统弹出一个名为SELECT DATAWINDOW的对话框,用以选择已存在的数据窗口对象或者创建新的数据窗口对象(图2-26)。图2-26这里来创建一个新的数据窗口,单击NEW按钮,在弹出的NEW DATAWINDOW对话框中有DATA SOURCE 和PRESENTATION STYLE两个组合框(图2-27),分别用来选择要创建的数据窗口的数据来源和显示样式,关于这些选项的含义在以后的内容中再详细介绍,这里选择数据源为QUICK SELECT,即简单查询型,数据显示样式选择GRID,即网格型。图2-27单击OK按钮,系统弹出一个名为QUICK SELECT对话框用于对数据源进行配置(图2-28),在TABLES栏中选中先前创建的表MYTELEBOOK,这时在COLUMNS栏中显示出MYTELEBOOK表中的所有的字段,让我们从这些字段中选择其中的一些,这样做是考虑到用户在大多数时候可能只对表中的某些字段感兴趣,没必要在提供给用户的界面上显示出记录的所有的字段。目前创建的这个数据窗口是用来浏览通讯录的大致情况,所以只选中NUMBER,NAME TELEPHONE三个字段,选好后在对话框的下部显示出这三个字段,在每一个字段的下面又有三个选项,单击NUMBER字段下的SORT选项框,在弹出的下拉框中选择ASCENDING选项,这表示以后在数据窗口中显示数据的时候按编号字段从小到大的顺序显示记录, 以便于查看。其它的选项我们不作改动。图2-28单击OK按钮,这样就为数据窗口设好了数据源,系统弹出的标题为DATAWINDOW的窗口中显示出的三个字段就是刚才选中的字段(图2-29),可以看出DATAWINDOW窗口被划分成了四个带状区域,这四个区域的大小和内容都是可以设计的,在HEADER区域中系统已经自动放好的就是我们为每个字段设定的题头,HEADER中的内容以后将显示在数据窗口中。单击左边工具条上的PREVIEW预览按钮,窗口中显示出预览的结果,数据库中的数据也自动按编号字段从小到大的顺序显示在网格中(图2-30)。图2-29图2-30接着为设计好的数据窗口对象起一个名字,双击DATAWINDOW窗口的左上角,弹出一个对话框询问是否保存设计结果,选择“是”后出现SAVE DATAWINDOW对话框,在DATAWINDOWS一栏中给设计好的数据窗口起名为TELE-DATAWINDOW1,确定在APPLICATION LIBRARIES选中的是TELEPHONE-BOOK1.PBL,然后单击OK按钮,就完成了第一个数据窗口对象的创建。再次单击POWERBAR工具条上的DATAWINDOW画板按钮,来创建第二个数据窗口对象,这个数据窗口用来显示在第一个数据窗口中选中的某个记录的详细信息。类似地,在弹出的对话框中选择NEW按钮,在NEW DATAWINDOW对话框中数据源选为SQL SELECT,即标准的SQL查询方式,数据显示方式这次设置为FREEFORM,即自由表格形式,它的特点是数据窗口中显示的每条记录的字段纵向排列,看起来比较清楚,选好后单击OK按钮,接下来弹出的对话框中同样选中MYTELEBOOK表后单击OPEN按钮,窗口中显示出表的所有字段,这次选中它的所有字段,可以发现在窗口下部的工作区中显示出自动生成的SQL语句,单击下部的SORT标签,单击并拖动NUMBER字段到右边的方框中,旁边出现的复选框表示已经把NUMBER字段按上升排序。单击DESIGN菜单,选中其中的RETRIEVIAL ARGUMENTS菜单项,弹出的对话框用来定义SQL 语句的搜索参数(图2-31),在NAME栏中给参数起名为NUMBER-SEARCH,TYPE就选择为NUMBER类型,然后单击OK按钮,就定义好了搜索参数。单击窗口下部的WHERE标签,单击COLUMN栏后选择NUMBER字段,OPERATOR栏就选择“=”号,VALUE栏中输入冒号加刚才定义的搜索参数NUMBER-SEARCH,然后单击PAINTERBAR工具条上的SELECT画板按钮,就定义好了数据窗口的数据源的具体格式。图2-31单击左边PAINTER BAR工具条上的PREVIEW按钮,弹出一个对话框用来输入刚才定义的搜索参数的值(图2-32),这里不妨输入1,确定后窗口中就显示出表TELEBOOK中的NUMBER的值为1的记录。选择PAINTERBAR工具条上的EXIT按钮,弹出的对话框询问是否保存数据窗口,单击“是”后,在弹出的对话框中给数据窗口起名为“TELE-DATAWINDOW2”,确定在APPLICATION LIBRARIES选中的是TELEPHONE-BOOK1.PBL对象库,然后单击OK按钮,就完成了第二个数据窗口对象的创建。图2-322.5 创建第二个窗口对象在创建了两个数据窗口对象后我们来创建第二个窗口,把数据窗口对象应用到窗口中去。单击POWERBAR工具条上的WINDOW画板按钮,在对话框中选择NEW按钮来定义一个新的窗口。单击PAINTERBAR工具条上的控件画板按钮,在弹出的方框中选择DATAWINDOW控件,再在窗口中单击把它放到窗口中,这里要提醒一点的是这里的DATAWINDOW控件与前面定义的数据窗口对象是两个不同的概念,这里的DATAWINDOW控件相当于一个容器,是用来存放数据窗口对象的。这里的数据窗口控件的作用是显示出数据库中所有记录的主要信息,所以可能在一个窗口中显示不下所有的数据,在这个DATAWINDOW控件单击鼠标右键,在弹出的菜单中选择PROPERTIES菜单项,在弹出 的对话框中选中VSCROLL BAR复选框,就为数据窗口控件在以后显示数据的时候提供了一个垂直滚动条,以便可以利用滚动条看到数据窗口中的所有的记录。用和放入第一个数据窗口控件类似的方法在窗口中放入第二个数据窗口控件,然后再在窗口中放入四个COMMANDBUTTON控件,鼠标右键单击激活窗口中的第一个DATAWINDOW控件,在弹出的菜单中选择PROPERTIES菜单项,弹出DATAWINDOW对话框,系统已经自动为这个控件起名为DW-1,这里就用这个名字,单击BROWSE按钮开始为控件定义它所联结的数据窗口对象,在弹出的SELECT DATAWINDOW对话框中选择数据窗口为TELE-DATAWINDOW1,然后单击OK按钮,可以发现在DATAWINDOW对话框的DATAWINDOW OBJECT NAME一栏中出现了刚选中的数据窗口对象(图2-33)。图2-33单击OK按钮,第一个数据窗口控件中显示的就是它所联结的数据窗口对象的结构。用类似的方法为第二个数据窗口控件联结刚才定义的数据窗口对象TELE-DATAWINDOW2,联结好之后把四个命令按钮控件上的文字分别改为“插入”,“删除”,“更新”和“关闭”,而它们的名字则分别修改为“CB-INSERT”,“CB-DELETE”,“CB-UPDATE”,“CB-COLSE”。接下来调整窗口的大小和窗口上的每个控件的位置和大小,要注意的是要使得数据窗口控件中的数据窗口对象的每一个字段都能在控件中看得到。调整好之后可以单击PAINTERBAR工具条上的PREVIEW按钮预览一下窗口的样子(图2-34)。设计好窗口以后单击PAINTERBAR工具条上的SAVE按钮,弹出SAVE WINDOW对话框用来给窗口起一个名字,给它起名为TELEPHONE-WINDOW2,确定对话框下部的对象库是TELEBOOK.PBL后单击OK 关闭对话框。这样就定义好了第二个窗口对象。图2-342.6 建立应用程序到目前为止,本程序中用到的对象都定义好了,但程序还不能运行,因为我们还没有为程序编写代码,这种代码在PowerBuilder中被称为脚本,PowerBuilder是一种基于面向对象的事件驱动机制开发工具,所以脚本也是针对对象的事件来编写,接下来就为应用程序编写脚本。PowerBuilder应用程序的特点是从应用对象开始执行程序,所以我们首先要做的是为应用对象的打开事件编写代码,单击POWERBAR工具条上的APPLICATION画板按钮打开应用对象,然后单击PAINTERBAR工具条上的SCRIPT画板按钮,系统弹出SCRIPT对话框用来为应用对象编写脚本,从SELECT EVENT下拉列表框中选择OPEN事件,然后在工作区中输入如下脚本(图2-35):SQLCA.DBMS=PROFILESTRING(PB.INI,DATABASE,DBMS,)SQLCA.DBPRAM=PROFILESTRING(PB.INI,DATABSE,DBPRAM,)OPEN(TELEPHONE-WINDOW1)图2-35解释这段脚本前要先介绍事务对象的概念,这里的SQLCA就是一个系统自动提供的缺省事物对象变量,SQLCA是一个全局变量,可以用在所有的窗口对象中。事物对象的作用是为联结数据库提供有关的信息,以便可以从数据库中获取需要的数据。这段脚本所做的工作是在应用对象启动后首先从POWERBUIDER中存放与数据库有关信息的文件PB.INI中取得需要的值放入事物对象变量中,然后打开TELEPHONE-WINDOW1窗口,以便用户从登录窗口输入正确的密码后可以进入到个人通讯录管理系统。这里就为应用对象编写这三行代码。单击POWERBAR工具条上的WINDOW画板按钮,选择打开TELEPHONE-WINDOW1,我们开始为它编写脚本,右键单击窗口上的OK按钮,首先在菜单中选择PROPERTIES菜单项来修改OK控件的一个属性,在弹出的对话框中有一个DEFAULT复选框,我们选中它(图2-36),这样在以后程序运行的时候按回车键的效果和单击OK控件就一样了,单击OK关闭对话框,然后再次右键单击窗口上的OK按钮,在菜单中选择SCRIPT菜单项开始为这个命令按钮的单击事件编写脚本,观察窗口的标题确定目前选择的是命令按钮的CLICK事件后在工作区中输入以下的脚本:if upper(trim(sle_1.text)=mypassword thenopen (telephone_window2)close(telephone_window1)else sle_1.setfocus()end if这段脚本所做的工作是当用户在打开的登录窗口中单击OK按钮的时候判断单行编辑框中的字符串在去掉前后的空格符和整个转换成大写字符后是否为字符串“MYPASSWORD”,如果是的就打开我们在前面定义的第二个,也就是用来对个人通讯录数据库进行操作的窗口,然后再关闭登录窗口, 如果输入的字符串与设定的字符串“MYPASSWORD”不符的话就表示用户不能对通讯录数据库进行访问,就把输入焦点切换到编辑框让用户重新输入正确的口令,这里我们把口令设成了“MYPASSWORD”,在实际应用中你可以换成一个自己的口令,这样可以保证自己的数据库的安全性。图2-36接下来我们为第二个建立的窗口,也就是真正对数据库进行操作的窗口编写脚本,这里的脚本是真正完成对数据库中数据的修改。首先要为窗口的打开事件编写脚本,也就是在窗口打开后需要干什么事。用类似打开第一个窗口的方法打开第二个窗口,用鼠标右击窗口中的空白区域,在弹出的菜单中选中SCRIPT菜单项,系统弹出一个用来为窗口本身所有可能的事件编写脚本的窗口,选中窗口的打开事件后在窗口的工作区中输入如下脚本:CONNECT;DW-1.SETTRANSOBJECT(SQLCA)DW-1.RETRIEVE()DW-2.SETTRANSOBJECT(SQLCA)脚本的第一条语句的意思是用刚才介绍的系统缺省的事物对象SQLCA联结数据库。第二行脚本的意思是告诉数据窗口控件DW-1中的数据窗口对象利用事物对象SQLCA来取得数据库的有关信息。而第三条语句的意思是让数据窗口控件中的数据窗口对象,要利用创建该数据窗口对象时的SELECT语句来获得数据显示在相应的数据窗口控件中。第四行语句的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年5G网络的网络切片与行业应用分析
- 2025年面点技能认定考试题及答案
- 2025年浙江嘉兴海盐县教育局第一批教师招聘16人(二)笔试备考题库及答案详解1套
- 2025年八上数学试卷真题及答案
- 2025年自考专业(建筑工程)测试卷含答案详解【能力提升】
- 2025年数学中考试卷内容及答案
- 资源型城市可持续政策对减排降碳的作用
- 易腐垃圾资源化综合体项目规划设计方案
- 2025自考专业(国贸)检测卷【必刷】附答案详解
- 2023年度全国统考教师资格考试《教育教学知识与能力(小学)》每日一练试卷(B卷)附答案详解
- 家庭资产配置与理财计划
- 燃气锅炉事故应急专项预案
- 文明实践集市活动方案
- 吸入性肺炎的护理查房
- 2025年天津市中考物理试卷真题(含标准答案)
- 循环经济与绿色生产方式
- 2025装配式建筑部品部件标准化设计在装配式建筑装配式阳台抗震建筑中的应用报告
- 快递超市转让合同范本
- 人工智能机器人教学课件
- 劳务公司安全管理规章制度
- 车辆保密协议书
评论
0/150
提交评论