当前位置:
文档之家› 第10-11章 应用对象创建自定义函数
第10-11章 应用对象创建自定义函数
数据库管理系统
第11章 创建自定义函数和结构
由于应用程序的要求千差万别,标准函数有时仍然满足不了用户 的要求,所以还需要创建符合自己要求的函数。 PowerBuilder的函数分两种类型:全局函数和对象函数。全 局函数独立于任何对象,在整个应用程序中都能使用;而对象函数 则与特定的窗口、菜单、用户对象等相关联,是对象的一部分, 根据定义可能在整个程序中使用,也可能只茌对象内部使用。 PowerBuilder的标准函数同样分为全局函数和对象函数两 类,如messagebox()、类型转换函数等就是全局函数;而 GetltemString()、AddItem()等就是对象函数。 结构是组织相关变量的一种方法,例如,可以把姓名、地址、工 资等信息放到一个结构变量中,并作为一个整体传递给函数。与 自定义函数相似,结构也有两种类型:全局结构和对象结构。全 局结构在整个程序中都能使用,而对象结构则只能在该对象中使 用。下面介绍创建自定义函数和结构的方法。
数据库管理系统
PowerBuilder 是个面向对象的开发环境,用它开发的应用 程序以对象和事件驱动为基本特征。作为PowerBuilder 的 对象之一,应用对象也有一组事件,当用户运行应用程序时, 首先触发应用对象的Open事件,在这个事件的事件处理程 序中我们可以设置应用的初始状态,装入其它对象、连接数 据库等。当用户终止应用程序时,应用对象的Close事件被 触发,在这个事件的事件处理程序中完成必要的系统清理工 作,例如断开与数据库的连接、清除用户自定义对象等。当 程序运行过程中发生严重错误时,应用对象的 SystemError事件被触发,这时可以报告错误类型和性质, 以便及时排除错误。
数据库管理系统
3.创建结构
1.
使用应用对象的例子: 实现在应用程序空闲时,隐藏主窗口,打开登 录窗口重新登录,实现对应用系统的保护。 实现步骤: 在应用对象的open事件中,利用idle(int n) 函数,设置启动应用对象的idle事件的时钟。 在idle时间中,隐藏主窗口,打开登录窗口, 当输入口令正确时,显示主窗口。
数据库管理系统
2.创建自定义对象函数
(1)public:该函数在整个程序中都可访问; (2)private:该函数只能在附属于当前窗口的 程序中使用; (3)protected:该函数只能在附属于当前窗口 的程序以及附属于该窗口的后继窗口的程序中 使用。
数据库管理系统
3.创建结构
结构实际上定义了一个新的数据类型,应用程序中使用点操作符 (.)访问结构变量的元素。 结构和用户自定义函数一样,有两种全局结构和对象结构。全局 结构可以在整个应用程序中使用,而这些结构与对象相关,与对 象保存在一起,而且只能在附属于对象的代码中使用。 例如我们定义了结构s_Person,它有三个分量Name、Address、 Salary(分别代表姓名、地址、工资),使用下述语句说明结构 变量lp_Person并给分量赋值: s_Person lp_Person lp_="李辉" lp_Person.Address="北京市" lp_Person.Salary=3000
数据库管理系统
第 10 章 应 用 对 象
每个程序都有个入口点,运行时程序从这个入口点启 动,比如,用C语言编写程序时,main()就是入口点。与 此相似,用PowerBuilder 开发应用程序时,同样需要 一个入口点,不过它不是个函数,而是PowerBuilder 的一个对象——应用对象。每个PowerBuilder应用程序 都必须有一个、而且只能有一个应用对象,也可以说,应 用对象代表了应用程序,程序从应用对象开始运行。 除了作为应用程序的入口点这一功能外,应用对象还 定义了应用程序的系统级行为,例如,应用程序使用哪些 应用库(一种PowerBuilder定义的特殊格式的文件)来 保存用到的各种对象、对象的缺省字体、应用程序的图标 等。
数据库管理系统
10.2
应用对象的事件应用
Close(关闭)事件 应用对象的Close事件只发生一次,它发生在 退出应用程序、返回到操作系统之前,是应用 程序的出口,通常在这个事件的事件处理程序 中完成下述工作: 删除应用程序运行过程中创建的对象(例如额 外的事务对象等)往INI文件中保存状态信息, 以便下次运行程序时恢复状态 关闭应用程序中尚未关闭的文件 断开与数据库的连接
数据库管理系统
3.创建结构
2.
在systemerror事件中,显示错误类型和错误信息。 首先了解error 的几个属性 (1)ClassDefinition PowerObject 出 错对象对应的类的信息. (2) Line Integer 出错的脚本行号 (3)Number Integer 错误号 (4)Object String 出错的对象类型 (5)ObjectEvent String 出错的事件 (6)Text String 错误信息. (7)WindowMenu String 出错的窗口或菜 单的名字
数据库管理系统
只读传递
readonly,不过不允许修改参数的值。 对于一个只读传递的形式参数,如果在函数中 试图改变参数的值,函数编译时就会发生错误。
数据库管理系统
2.创建自定义对象函数
可以为ApplicationObject对象、窗口对象、 用户对象创建自定义函数,这种函数称为对象函 数。对象函数一般只能在该对象内使用,当该对 象正在打开且该函数的Access属性为public时, 其他对象的程序可以调用该函数,不过需在函数 前加对象名,如W_pipe.w_initial()。如果 函数所在的对象没有被打开(即不在内存中),则 该对象函数不能被其他对象的程序调用。自定义 对象函数的函数名的访问属性设置的设置:
数据库管理系统
设置缺省字体
1.
2. 3. 4. 5. 6. 7.
应用对象的四个字体属性决定了开发应用程序过程中经常使用的四 种字体,这四个字体属性分别为:Text Font,Column Font, Header Font,LabelFont。 Text Font决定窗口中的控件、用户对象、数据窗口中静态文本的 缺省字体; Column Font指定数据窗口中检索出的数据使用的缺省字体; HeaderFont定义列表风格(tabular)和网格风格(grid)数据窗 口对象中列标题的缺省字体; Label Font确定自由风格(freeform)数据窗口对象中列标签的缺 省字体。 在开始开发应用程序时,根据需要先设定这些字体后,以后设计其 它对象时就免除了反复设置字体的重复劳动。 字体包括四方面的内容::字体类型(如宋体、楷体、行楷等)、 字体大小(如10,11,12),字体风格,字体的颜色。
由此可见,应用对象对开发完美的PowerBuilder应用程序 至关重要、不可或缺。
数据库管理系统
10.1 应用对象的属性
应用对象是开发PowerBuider应用程序必须用到的对 象,应用对象的属性对整个应用程序的开发起着举足轻 重的作用,它的字体属性决定了应用程序开发过程中其 它对象的文本字体。 利用应用对象可以为应用程序设置下述属性: 缺省的字体属性(包括字体、风格、大小、颜色); 应用程序的图标;
数据库管理系统
10.2
应用对象的事件应用
对象的事件不多,一共只有六个,但它们却十 分重要。它的Open事件必须编写事件处理程 序,否则整个应用程序就会什么也不做就结束 了。通常情况下,在Open事件处理程序中我们 设置应用系统的初始环境、建立与数据库的连 接、打开应用的第一个窗口等。 下面介绍应用对象的Open,Close,Idle, SystemError,ConnectionBegin, ConnectionEnd事件的发生时机与常见用法。
数据库管理系统
1.创建自定义全局函数
向调用的脚本返回值。 例如PB的标准函数messagebox返回一个整数,表示 用户单击的是哪个按钮。 4.定义函数的调用参数:“Arguments”组框中定义 函数参数,每个参数占据一行,每行前的数字, “Type”下拉列表框中选择参数类型,在“Pass By” 下拉列表框中指定参数传递方式 参数的传递方式:)
数据库管理系统
值传递
“value”,将实际参数的值传递给函数参数;不 改变实际实际参数的值。 例如定义一个函数f_add1(integer n) n=n+1 在脚本中调用该函数 a=3 f_add1(a)
数据库管理系统
地址传递
reference,把实际参数的地址传递给函数,此 时,函数如果修改了形式参数的值,那么实际 参数的值也就被修改了; f_add1(ref integer n) n=n+1 在上层脚本中调用该函数 int a=3 f_add1(a) 此时a的值是什么?
数据库管理系统
1.创建自定义全局函数
其步骤为: 1.击file菜单中“New”按钮创建新的自定义全局函数, 弹出定义用户自定义函数的对话框。 2.定义函数的名字:通常以f_开头(指示这是个用户自 定义函数),以与系统内置函数相区别。 “Access”下拉列表框指定函数的访问范围,因为当前 我们定义的函数是全局函数,因此该列表框不能选择。 3.定义返回值的类型:“Return”下拉列表框用于指定 函数返回值的类型,缺省时为Integer。 注意:如果定义了函数的返回值,则在函数体中必须有 return 返回值
数据库管理系统
10.2
应用对象的事件应用
Open(打开)事件 应用对象的Open事件在启动应用程序时发生,且只 发生一次。是应用程序的入口,对所有应用程序来说, 都必须对该事件编程,否则运行应用程序时系统将出 现一个警告对话框,提醒你必须对应用对象的Open 事件编程。一般来说,在Open事件处理程序中应该 完成下述工作: 1. 完成初始化工作 2. 利用INI文件设置某些属性,或初始化一个事务对 象 3. 连接要访问的数据库 4. 打开应用程序的第一个窗口