第10-11章 应用对象创建自定义函数_第1页
第10-11章 应用对象创建自定义函数_第2页
第10-11章 应用对象创建自定义函数_第3页
第10-11章 应用对象创建自定义函数_第4页
第10-11章 应用对象创建自定义函数_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章应用对象每个程序都有个入口点,运行时程序从这个入口点启动,比如,用C语言编写程序时,main()就是入口点。与此相似,用PowerBuilder开发应用程序时,同样需要一个入口点,不过它不是个函数,而是PowerBuilder的一个对象——应用对象。每个PowerBuilder应用程序都必须有一个、而且只能有一个应用对象,也可以说,应用对象代表了应用程序,程序从应用对象开始运行。除了作为应用程序的入口点这一功能外,应用对象还定义了应用程序的系统级行为,例如,应用程序使用哪些应用库(一种PowerBuilder定义的特殊格式的文件)来保存用到的各种对象、对象的缺省字体、应用程序的图标等。PowerBuilder是个面向对象的开发环境,用它开发的应用程序以对象和事件驱动为基本特征。作为PowerBuilder的对象之一,应用对象也有一组事件,当用户运行应用程序时,首先触发应用对象的Open事件,在这个事件的事件处理程序中我们可以设置应用的初始状态,装入其它对象、连接数据库等。当用户终止应用程序时,应用对象的Close事件被触发,在这个事件的事件处理程序中完成必要的系统清理工作,例如断开与数据库的连接、清除用户自定义对象等。当程序运行过程中发生严重错误时,应用对象的SystemError事件被触发,这时可以报告错误类型和性质,以便及时排除错误。由此可见,应用对象对开发完美的PowerBuilder应用程序至关重要、不可或缺。10.1应用对象的属性应用对象是开发PowerBuider应用程序必须用到的对象,应用对象的属性对整个应用程序的开发起着举足轻重的作用,它的字体属性决定了应用程序开发过程中其它对象的文本字体。利用应用对象可以为应用程序设置下述属性:缺省的字体属性(包括字体、风格、大小、颜色);应用程序的图标;设置缺省字体

应用对象的四个字体属性决定了开发应用程序过程中经常使用的四种字体,这四个字体属性分别为:TextFont,ColumnFont,HeaderFont,LabelFont。TextFont决定窗口中的控件、用户对象、数据窗口中静态文本的缺省字体;ColumnFont指定数据窗口中检索出的数据使用的缺省字体;HeaderFont定义列表风格(tabular)和网格风格(grid)数据窗口对象中列标题的缺省字体;LabelFont确定自由风格(freeform)数据窗口对象中列标签的缺省字体。在开始开发应用程序时,根据需要先设定这些字体后,以后设计其它对象时就免除了反复设置字体的重复劳动。字体包括四方面的内容::字体类型(如宋体、楷体、行楷等)、字体大小(如10,11,12),字体风格,字体的颜色。

设置应用程序图标

图标的用途是代表应用程序。程序运行后,如果用户将其最小化,该图标就出现在屏幕上。指定缺省全局变量的类型

PowerBuider提供了五个内置的全局变量(SQLCA,SQLDA,SQLSA,Error,Message),它们都有缺省的类型,但开发者可对其进行修改。10.2应用对象的事件应用对象的事件不多,一共只有六个,但它们却十分重要。它的Open事件必须编写事件处理程序,否则整个应用程序就会什么也不做就结束了。通常情况下,在Open事件处理程序中我们设置应用系统的初始环境、建立与数据库的连接、打开应用的第一个窗口等。下面介绍应用对象的Open,Close,Idle,SystemError,ConnectionBegin,ConnectionEnd事件的发生时机与常见用法。10.2应用对象的事件应用Open(打开)事件应用对象的Open事件在启动应用程序时发生,且只发生一次。是应用程序的入口,对所有应用程序来说,都必须对该事件编程,否则运行应用程序时系统将出现一个警告对话框,提醒你必须对应用对象的Open事件编程。一般来说,在Open事件处理程序中应该完成下述工作:完成初始化工作利用INI文件设置某些属性,或初始化一个事务对象连接要访问的数据库打开应用程序的第一个窗口10.2应用对象的事件应用Close(关闭)事件应用对象的Close事件只发生一次,它发生在退出应用程序、返回到操作系统之前,是应用程序的出口,通常在这个事件的事件处理程序中完成下述工作:删除应用程序运行过程中创建的对象(例如额外的事务对象等)往INI文件中保存状态信息,以便下次运行程序时恢复状态关闭应用程序中尚未关闭的文件断开与数据库的连接10.2应用对象的事件应用Idle(空闲)事件

Idle事件在下述情况下发生:首先在应用程序的某段程序中使用Idle()函数设置一个定时器时间间隔,如果在时间间隔规定的时间内用户没有敲击键盘或使用鼠标(即用户没有操作应用程序),那么系统产生应用对象的Idle事件,用户的任何交互操作都将重设该定时器。Idle事件的用途有下述几种:创建自己独具特色的屏幕保护程序隐藏机密数据并强制用户在长时间未操作应用程序时重新输入密码了解用户是否长时间未操作应用程序,如果是的话,应用程序可以自动退出、返回系统,这样有助于减少数据库的连接数目并节省数据库资源。10.2应用对象的事件应用SystemError事件是处理运行错误的最后一道关卡,用来处理最严重的错误,可以在此处编写错误处理和可能的恢复代码,简单的措施是显示出错信息。如果未对此事件编程,那么系统出错时PowerBuider会通过对话框显示错误代码和错误信息,不过它是用英文表达的,对国内用户显然不友好。10.2应用对象的事件应用

ConnectBegin(连接开始)事件ConnectBegin事件用于分布式PowerBuider应用的服务器端。当客户程序试图连接到服务器程序时,触发服务器程序应用对象的ConnectBegin事件。ConnectEnd(连接结束)事件

ConnectEnd事件用于分布式PowerBuider应用的服务器端。当客户程序试图断开与服务器程序的连接时,触发服务器程序应用对象的ConnectEnd事件。

第11章创建自定义函数和结构由于应用程序的要求千差万别,标准函数有时仍然满足不了用户的要求,所以还需要创建符合自己要求的函数。

PowerBuilder的函数分两种类型:全局函数和对象函数。全局函数独立于任何对象,在整个应用程序中都能使用;而对象函数则与特定的窗口、菜单、用户对象等相关联,是对象的一部分,根据定义可能在整个程序中使用,也可能只茌对象内部使用。

PowerBuilder的标准函数同样分为全局函数和对象函数两类,如messagebox()、类型转换函数等就是全局函数;而GetltemString()、AddItem()等就是对象函数。结构是组织相关变量的一种方法,例如,可以把姓名、地址、工资等信息放到一个结构变量中,并作为一个整体传递给函数。与自定义函数相似,结构也有两种类型:全局结构和对象结构。全局结构在整个程序中都能使用,而对象结构则只能在该对象中使用。下面介绍创建自定义函数和结构的方法。1.创建自定义全局函数其步骤为:

1.击file菜单中“New”按钮创建新的自定义全局函数,弹出定义用户自定义函数的对话框。

2.定义函数的名字:通常以f_开头(指示这是个用户自定义函数),以与系统内置函数相区别。“Access”下拉列表框指定函数的访问范围,因为当前我们定义的函数是全局函数,因此该列表框不能选择。

3.定义返回值的类型:“Return”下拉列表框用于指定函数返回值的类型,缺省时为Integer。注意:如果定义了函数的返回值,则在函数体中必须有

return返回值

1.创建自定义全局函数

向调用的脚本返回值。例如PB的标准函数messagebox返回一个整数,表示用户单击的是哪个按钮。

4.定义函数的调用参数:“Arguments”组框中定义函数参数,每个参数占据一行,每行前的数字,“Type”下拉列表框中选择参数类型,在“PassBy”下拉列表框中指定参数传递方式参数的传递方式:)值传递“value”,将实际参数的值传递给函数参数;不改变实际实际参数的值。例如定义一个函数f_add1(integern) n=n+1在脚本中调用该函数

a=3 f_add1(a)地址传递reference,把实际参数的地址传递给函数,此时,函数如果修改了形式参数的值,那么实际参数的值也就被修改了;f_add1(refintegern) n=n+1在上层脚本中调用该函数inta=3f_add1(a)此时a的值是什么?只读传递readonly,不过不允许修改参数的值。对于一个只读传递的形式参数,如果在函数中试图改变参数的值,函数编译时就会发生错误。2.创建自定义对象函数可以为ApplicationObject对象、窗口对象、用户对象创建自定义函数,这种函数称为对象函数。对象函数一般只能在该对象内使用,当该对象正在打开且该函数的Access属性为public时,其他对象的程序可以调用该函数,不过需在函数前加对象名,如W_pipe.w_initial()。如果函数所在的对象没有被打开(即不在内存中),则该对象函数不能被其他对象的程序调用。自定义对象函数的函数名的访问属性设置的设置:2.创建自定义对象函数(1)public:该函数在整个程序中都可访问;(2)private:该函数只能在附属于当前窗口的程序中使用;(3)protected:该函数只能在附属于当前窗口的程序以及附属于该窗口的后继窗口的程序中使用。3.创建结构结构实际上定义了一个新的数据类型,应用程序中使用点操作符(.)访问结构变量的元素。结构和用户自定义函数一样,有两种全局结构和对象结构。全局结构可以在整个应用程序中使用,而这些结构与对象相关,与对象保存在一起,而且只能在附属于对象的代码中使用。例如我们定义了结构s_Person,它有三个分量Name、Address、Salary(分别代表姓名、地址、工资),使用下述语句说明结构变量lp_Person并给分量赋值:s_Personlp_Personlp_Person.Name="李辉"lp_Person.Address="北京市"lp_Person.Salary=30003.创建结构使用应用对象的例子:实现在应用程序空闲时,隐藏主窗口,打开登录窗口重新登录,实现对应用系统的保护。实现步骤: 在应用对象的open事件中,利用idle(intn)函数,设置启动应用对象的idle事件的时钟。 在idle时间中,隐藏主窗口,打开登录窗口,当输入口令正确时,显示主窗口。3.创建结构在systemerror事件中,显示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论