




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
111 简介对象是面向对象程序设计的核心概念。一个对象可以拥有若干属性,以及一系列的对这些属性进行操作的方法。一个对象可以通过若干个接口同其它的对象进行相互的作用,共同完成一项工作。当对象被定义好之后,它就拥有了活力,就能够完成一定的功能。我们给出一个对象的定义之后,就可以根据需要多次使用,而不需要做任何额外的工作,这就大大提高了脚本的重用性和易维护性。POWER BUILDER 提供了用户对象这个特性,很好的支持了对象化程序设计。下面我们就具体介绍如何在POWER BUILDER中定义和使用用户对象。POWER BUILDER 中有两种用户对象,一种是可视的用户对象,一种是类用户对象。下面我们先介绍可视用户对象。112 可视化用户对象所谓可视用户对象就是可重用的具有某种行为的一个或一组控件。下面举一个例子,定义一个用户对象。首先单击POWER BAR 上面的用户对象画板按钮USER OBJ,屏幕上弹出用户对象选择对话框。如图11-1。图11-1单击NEW按钮,新建一个用户对象。系统要求我们选择用户对象的类型。如图11-2。图11-2下面的VISUAL组框表示建立可视类型的用户对象,CUSTOM图标表示定制类型,定制的可视化用户对象是具有多个控件的对象,它们作为一个整体来发挥作用。STANDARD图标表示标准类型的可视化用户对象,它是通过继承一个标准类型的POWER BUILDER控件来定义的。我们可以通过修改其定义使之适应程序设计的要求。EXTERNAL图标表示外部可视用户对象,它的定义来自基于WINDOWS操作系统的POWER BUILDER 系统之外的对象,比方说,如果您准备了一个WINDOWS动态链接库,那么就可以使用它在POWER BUILDER 中建立一个外部的可视化用户对象。上面的CLASS组框表示要建立类用户对象,其中也包括定制和标准两种,它们的含义与刚才介绍的可视化用户对象的对应部分大致相同,在后面的内容当中,我们将加以详细地介绍。单击VISUAL 组框中的STANDARD按钮,建立一个标准类型的用户对象。接下来选择继承哪一种标准控件。这个列表框当中列出了POWER BUILDER 中支持的所有标准控件,选择PICTURE图片控件加以继承。然后单击OK按钮。如图11-3。图11-3下面就用户对象画板的工作区。我们看到上面有一个图片控件。在它上面单击鼠标右键,弹出菜单,选择SCRIPT命令,开始编写脚本。编写用户对象的脚本要处理的一个重要问题就是解决用户对象和拥有它的窗口之间的通讯问题。一般的情况之下,我们有两种选择:使用函数,或者使用用户事件。所谓用户事件就是在POWER BUILDER标准事件以及WINDOWS标准事件之外,由用户自己定义的事件。下面我们示范如何定义和使用用户事件。在主菜单中选择DECLARE的USER EVENT命令,定义一个用户事件。如图11-4。图11-4在EVENT NAME 一栏当中可以敲入事件的名称,在EVENT ID一栏当中可以敲入事件的ID号,不过如果您定义的用户事件与WINDOWS标准消息无关的话,可以忽略这个命令ID号。单击OK按钮结束定义。如图11-5。EVENT NAME 为 ALTERPIC , EVENT ID 为 PBM_CUSTOM01。图11-5在脚本画板的工作区当中,单击SELECT EVENT事件选择列表框,我们看到ALTERPIC 这个用户定义的事件已经出现在列表当中了。下面的工作当中,我们将会用到一个全局变量。如何定义一个全局变量呢?选择DECLARE菜单当中的DECLARE GLOBAL VARIABLES 命令,在POWER BUILDER弹出的全局变量定义对话框当中输入变量的定义integer picnum,单击OK按钮,就完成了定义。如图11-6。图11-6在这个事件的脚本当中我们还将使用一个结构。什么是结构呢?结构就是相关变量的集合,结构的相关变量被称为结构属性。结构可以分为全局级和对象级两种,这里我们定义一个对象级的结构,用来保存几个字符串。定义结构的方法非常的简单。选择DECLARE中的USER OBJECT STRUCTURES命令,系统弹出结构选择对话框,单击NEW按钮,新建一个结构。在VARIABLE NAME 一栏当中输入变量的名字,选择变量的类型。输入需要的变量之后,关闭结构定义画板。如图11-7。图11-7系统将会提示我们保存这个结构,选择“是”按钮,给结构取一个名字strucpicturename ,定义结构的工作就完成了。如图11-8。图11-8如何在程序中使用这个结构呢?一个结构就是一个新的数据类型,在使用之前必须实例化。这句脚本的意思就是生成一个结构的实例。(这一步可以略过,因为后面也没有用上。)strucPictureName name我们可以使用点操作符给结构的变量赋值。name.pic1 = 1.bmpname.pic2 = 2.bmpname.pic3 = 3.bmpname.pic4 = 4.bmpname.pic5 = 5.bmpname.pic6 = 6.bmpname.pic7 = 7.bmp这段脚本的意思是根据全局变量的值从结构变量当中取出合适的值来改变图片控件的属性。这一段代码的意思是创建一个名为 name 的以strucPictureName为模板的结构体。以下脚本是写在alterpic 事件里面的:CHOOSE CASE picnum case 1 this.picturename = 1.bmp picnum=2 case 2 this.picturename = 2.bmp picnum=3 case 3 this.picturename = 3.bmp picnum=4 case 4 this.picturename = 4.bmp picnum=5 case 5 this.picturename = 5.bmp picnum=6 case 6 this.picturename = 6.bmp picnum=7 case 7 this.picturename = 7.bmp picnum=1END CHOOSE单击POWER BAR上面的RETURN按钮,关闭工作区。关闭用户对象定义工作区。单击“是”按钮确认保存这个用户对象,为这个对象取名字animatepic。单击OK按钮。如图11-9。图11-9接下来,打开一个窗口,单击控件布置按钮,弹出控件列表,单击USER OBJECT按钮,系统弹出用户对象选择对话框,在列表中选择刚才定义的控件,选择然后在窗口上单击鼠标左键,布置这个控件。如图11-10。图11-10在窗口上面单击鼠标右键,弹出菜单,选择SCRIPT命令。在事件选择列表当中选择OPEN事件,在其中加入一段代码。Timer(0.5)它的意思是在窗口打开的时候,设置该窗口的定时器触发时间间隔为半秒钟。设置然后选择窗口的TIMER定时器触发事件。加入这样的代码。p_1.TriggerEvent(alterpic)它的意思是当定时器计时已满事件触发的时候,程序触发我们刚才定义的用户事件。这样就完成了窗口和用户对象的接口定义。关闭脚本画板工作区。关闭窗口画板工作区。从上面的例子当中,可以看出使用用户对象的便利之处。113 类用户对象一般不推荐使用这种方法建立函数,最好在POWER BAR1里面找fun按钮,建立全局的函数。为了使读者有一个比较全面的知识结构,笔者在这里简单提一下,有兴趣的读者可以阅读学习,类用户对象对于多个返回值的函数有优势,可是总的来说使用起来不是很方便,如果想见效快的朋友,可以直接跳到11.4进行阅读学习全局函数的使用方法。除了可视的用户对象之外,POWER BUILDER还提供了一种不可视的用户对象:类用户对象。它也具有非常广泛的应用领域。比方说,在制作一个商用数据库软件的时候,经常会使用某些商业规则对数据进行重复地计算和处理。如果我们定义一个用户对象,由它来管理这套数据处理的办法,那就会使程序的设计工作方便很多。下面我们通过一个例子来说明如何建立和使用类用户对象。首先单击POWER BAR上面的用户对象画板按钮USER OBJECT。系统弹出对象选择对话框。 单击NEW按钮,新建一个对象。接着,系统询问新建用户对象的类型。关于这两个组框的含义,在介绍可视化用户对象的时候已经进行了大致的说明。CLASS组框当中的STANDARD图标表示标准类型的类用户对象。POWER BUILDER本身带有一些不可视的用户对象,比方说前面曾经提到过的系统事务处理对象,通过继承这些系统对象生成的类用户对象就是标准类型的类用户对象。CUSTOM图标表示定制的类用户对象,顾名思义就是用户自己定义的类对象。我们选中这个图标,建立一个定制类用户对象。单击OK按钮,进入用户对象画板的工作区。如图11-11。图11-11这个矩形框就代表着用户对象,由于类用户对象是不可见的,所以我们不能在它上面布置任何的可视控件。接下来要做的工作是为这个对象封装属性和函数。在对象上面单击鼠标右键,弹出菜单。如图11-12。图11-12GLOBAL VARIABLES,SHARED VARIABLES,INSTANCE VARIABLES这三个命令都可以用来为对象定义变量属性。GLOBAL VARIABLE 是全局变量,它可以从应用程序的任何地方直接访问。INSTANCE VARIABLE是实例变量,什么是实例呢?我们在这里定义的是类用户对象,它相当于一个模板,进行程序的设计的时候,我们可以在需要的时候根据这个模板生成具体的对象,这些具体的对象才是我们真正使用的东西,它们被称为实例。实例变量就是为一个对象产生的所有实例定义的,但是它的值对于每一个实例而言又是不同的。SHARED VARIABLE是共享变量,和实例变量一样,它也是与一个对象的所有实例都有关系,不同的是共享变量在每一个实例变量当中都具有相同的值。我们选择INSTANCE VARIABLE 定义一个实例变量。屏幕上弹出声明实例变量的对话框。如图11-13。图11-13在里面敲入以下需要定义的变量。decimal1value1decimal1value2decimal1value3decimal1value4decimal1value5decimal1thevalue单击OK按钮,关闭对话框。再次在对象上面单击鼠标右键,选择USER OBJECT FUNCTIONS 命令,为对象封装函数。如图11-14。图11-14屏幕上显示函数选择对话框,单击NEW按钮新建一个函数。这里介绍两种方法,第一种如图11-15。图11-15在NAME 一栏当中,输入函数的名字 calplan1 。单击ACCESS列表框,如图11-16。图11-16Access缺省值为“public” 。访问属性Access有三个选择: public:在整个程序中都可访问。表示可以从应用程序的任何地方访问这个函数。 private:只能在当前对象的程序中使用,不能在该对象的后代的程序中使用。 protected:只能在当前对象的程序以及该对象的后代的程序中使用。对象函数的命名规则一般与对象有关,如应用对象Application Object的函数一般以“af_”作前缀,窗口对象Window的函数一般以“wf_”作前缀,菜单对象menu的函数一般以“mf_”作前缀,用户自定义对象的函数一般以“uf_”作前缀。这些规则清楚地表明了函数所在对象的类型,便于程序的维护。选择PRIVATE类型。这样就可以在使用的时候直接改变存储的数值,不需要再用赋值语句。在RETURN列表框中可以选择当前函数运行的返回值类型。我们接受缺省的INTEGER整数类型。下面的ARGUMENT组框是用来定义当前函数的参数表的。我们要定义的函数只接受一个参数,输入参数的名称 thevalue ,在参数类型选择列表框当中选择需要的参数类型。PASS BY列表框是用来定义参数传递方法的。单击这个列表框,如图11-17。图11-17VALUE方式的意思是传参的时候将这个参数复制一份,再利用这个值进行计算,函数操纵的是参数的复制品,这样函数被调用结束的时候将不会影响参数的值,这个参数实际上就相当于C语言中的形参;REFERENCE引用方法的意思就是函数进行数据处理的时候将会直接地操纵这个参数,这意味着在函数当中将可以改变参数的值,这个参数实际上就相当于C语言中的变参;READ ONLY方式与引用方式的不同之处在于函数只能读参数的值而不能直接改变参数。可简单总结如下: Value:值传递-将实际参数的值传递给函数参数 Reference:地址传递-把实际参数的地址传递给函数,此时,如果函数修改了形式参数的值,那么实际参数的值也就被修改了。 Readonly:地址传递-把实际参数的地址传递给函数,不过不允许修改参数的值。进行了以上的设置之后,单击OK按钮,就进入了POWER BUILDER 的函数工作区,我们可以在这里输入需要的函数定义了,mod(被除数,除数)=余数。如图11-18。value1=value1 - mod(value1,1)value2=value2 - mod(value2,1)value3=value3 - mod(value3,1)value4=value4 - mod(value4,1)value5=value5 - mod(value5,1)thevalue = value1 + value2 + value3 + value4 + value5return 0 图11-18第二种方法更为简单,推荐使用。如图1。图 1不需要设置任何的ARHUMENTS。这样的好处在使用的时候不需要提供任何的参数,更方便调用。进行了以上的设置之后,单击OK按钮,就进入了POWER BUILDER 的函数工作区,设置的函数与方法一完全一致。关闭工作区,选择“是”保存这个函数。前面我们已经完成了给对象封装变量和函数的工作,关闭工作区,单击“是”按钮确认保存这个对象,给对象取名为 calplan,单击OK按钮。这样就完成了一个类用户对象calplan的定义。那么如何使用这个类用户对象呢?下面举一个例子。打开一个已经准备好的应用程序,在需要使用用户对象首先声明一个用户对象:calplan instance然后使用CREATE生成类用户对象的一个实例:instance = CREATE calplan当对象例化之后,我们就可以使用这个实例进行工作了。需要注意的是当不再需要使用这个对象的时候,必须用DESTROY语句来清除这个对象:DESTROY calplan在“按方案一计算按钮”的按钮中写以下脚本。如图11-19。图11-19calplan instance instance = CREATE calplan instance.value1 = dec(em_1.text)instance.value2 = dec(em_2.text)instance.value3 = dec(em_3.text)instance.value4 = dec(em_4.text)instance.value5 = dec(em_5.text)instance.calplan1()em_6.text =string(instance.thevalue)DESTROY instance在程序中其它使用这个类用户对象的地方也要进行同样的工作。我们运行这个程序。按下“按方案一计算按钮”,对象对数据取整加和。“按方案二计算按钮”的演示这里就不提供了,因为用这种方法在实际中不是很实用。笔者建议还是使用全局函数比较方便。下面我们开始学习使用全局函数。114 使用全局函数首先创建一个名为w_1的窗口,结论框旁边的是11.1中制作的插件 animatepic ,可直接插入检验效果,如图11-20。图11-20em_1 到 em_5 的设置如图11-21。图11-21结论的那个框em_6 的设置如图11-22。图11-22至此,准备工作就基本完成了。下面开始写函数。点击POWER BAR1中的FUNCTION 按钮。选择NEW ,创建新的函数wf_1。ARGUMENT 中有5个参数,ls_1到ls_5,属性都一致。如图11-23。图11-23点击OK。确定建立以下函数。如图11-24。dec ld_1,ld_2,ld_3,ld_4,ld_5,ld_return /定义为数值ld_1 = dec(ls_1) - mod(dec(ls_1),1)ld_2 = dec(ls_2)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 管网工程钢筋施工方案(3篇)
- 2025【标准合同】电子产品批发采购合同
- 锅炉天然气知识培训总结课件
- 2025煤炭购销合同标准范本
- 2025年石英玻璃管(棒)项目立项申请报告模范
- 暑雨季砌筑工程方案(3篇)
- 工程隧道防水施工方案(3篇)
- 大规模工程土方运输方案(3篇)
- 2025年工字钢项目申请报告模板
- 2025年电商平台内容营销与种草经济案例分析及市场拓展
- 智慧养猪解决方案演示课件
- 最新中医骨伤科学考试题库及答案
- 产品形态设计课件完整
- 德国巴斯夫抗氧剂和紫外线吸收剂
- SG-A088接地装置安装工程工检验批质量验收记录
- 《芯片原理与技术》课件微流控芯片
- HY_T 0330-2022 海滩养护与修复工程验收技术方法
- 混凝土外观质量缺陷及治理措施PPT课件
- 十四条经络养生课件
- 麻醉医师资格分级授权管理能力评价与再授权制及程序培训考核试题及答案
- 钢结构厂房监理实施细则
评论
0/150
提交评论