第14章用户自定义对象
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.创建定制类用户对象
定制类用户对象是用户自己设计的对象,用于封 装不需要可视特性的处理过程。这些对象不继承某个 对象或控件,完全由用户通过定义势力变量、函数、 事件来实现。定制类用户对象只有两个系统预定义事 件:constructor和destructor。其创建过程和使用 方法完全类似于标准类用户对象。 删除用户对象,可在library工作区实现。
• 1.创建标准类用户对象
选择new|object|standard class,单击ok按钮, 在弹出的标题为“select stand class type”的窗口选 择创建的用户对象所继承的内部系统对象,然后单击 ok按钮,将打开标准类用户对象定义画板。 类用户对象是不可见的,不能在上面布置可视控 件。接下来为这个对象封装属性、函数和事件以及变 量等,编写用户对象所需的各种事件处理程序。
14.1可视用户对象
可视用户对象就是用户定义的控件,是在界面上可以看到并 使用的对象,主要用于完成应用程序和用户之间的交互。 可视用户对象可以实现对一个或者多个可视控件的重用,可 以在用户对象面板中放置控件、修改对象的属性或者为对象添 加代码 。 可视对象有3种:
– – – 标准可视用户对象(Standard Visual User Object):从可视的系 统标准控件继承而来的用户对象。 定制可视用户对象(Custom Visual User Object):包含多个系统 标准控件和函数等单元,可以作为一个标准的控件单元在窗口中使 用。 外部可视用户对象(External Visual User Object):包含一个来自 外部的动态链接库(DLL)的可视控件,也可以像窗口中其他控件一 样使用。是使用PowerBuilder以外的工具创建的对象。
第14章 用户自定义对象
pb中有两种用户对象:
• 可视用户对象(visual user object),像按钮、编辑框那 样具备可视的外观,主要完成应用程序与用户之间的信息交流; • 类用户对象(class user object),没有屏幕表现形式,主 要用于封装和完成一定的业务逻辑, 用户对象的命名一般以u_为前缀,用户对象控件或实例的 命名一般以uo_为前缀。
例如,我们创建一个定制可视用户对象,用来操 作数据窗口中的数据。如下图窗口中右边的控件组合 就是自定义定制可视用户对象。
在用户自定义对象中定义实例 变量如下: Datawindow dw 然后在每一个按钮中编写代码。
如:在“第一页”按钮中有代 码: Dw.scrolltorow(1)
5.
创建外部可视用户对象
用户对象是拓展Pb功能的有效方法之一。利用用户对象,我们既 可以扩展系统原有对象的功能,增加新的使用方法,又能够创建出高度 可重用的自定义部件,在一个或多个应用程序中反复使用,缩减开发和 维护的时间,进一步提高应用程序的开发效率。同时,还可以将其他语 言,如c++开发的代码嵌入到pb程序中。 用户对象具有下述优势: (1)避免了在应用程序的不同地方编写功能相同或相近代码的麻烦, 提高了应用程序的可维护性。 (2)用户对象可以把一组总在一起使用的可视控件组合在一起,构成 一个完成特定功能的控件,可以在需要的地方随时使用应用程序。 (3)用户对象提供了构造具有一致外观的可视部件的方法。 (4)用户对象能够把相关功能封装在一起。 (5)用户对象允许开发人员扩展某些pb系统对象的功能。
PowerBuilder实用教程
第14章
教学目标 教学重点 教学过程
使来自百度文库用户对象
教学目标
• 了解如何建立用户对象 • 了解用户对象使用的方法
教学重点
• • • • 用户对象分类 用户对象的创建 使用用户对象 定制用户对象
教学过程
• 用户对象概述 • 可视用户对象 • 类用户对象
第14章 用户自定义对象
2.使用类用户对象
类用户对象没有可视成分,他们在使用时,需要在代码中创建它的 一个实例。步骤如下: (1)说明类用户对象类型的变量,用create语句创建该对象的一 个实例。 (2)在变量的整个作用域中,代码都能访问该对象的属性、事件、 函数,就像使用系统预定义对象那样。 (3)不在使用该用户对象时,使用destroy语句删除该对象,以释 放所占的内存。 例:我们已经创建了一个标准类用户对象u_datastore,它从数据存储对象 datastore继承得到,那么代码中可以这样使用: u_datastore myds myds=create u_datastore myds.dataobject=‘d_user_search’ myds.settransobject(sqlca) Myds.retrieve() … destroy myds
外部可视用户对象包含一个来自外部的动态链接库(DLL)的可视控件,也 可以像窗口中其他控件一样使用。是使用PowerBuilder以外的工具创建的对象, 实际上就是在pb中使用第三方控件。使用外部控件通常是为了完成pb本身难以完 成的功能。 选择new|object|external visual,单击ok按钮,将打开外部可视用户对 象画板(如下所示)。在图中,在libraryname中输入外部用户对象所在的dll文 件名,或者单击browse按钮选择dll文件;在class name编辑框中键入dll中的注 册类名;在text编辑框中输入显示在控件上的文本;根据需要设置其他属性;说 明用户对象所需要的函数、事件、变量、结构;编写用户对象的各种事件处理程 序;最后保存用户对象。
选择new|object|standard visual,单击ok按钮,在弹出的 标题为“select stand visual type”的窗口,选择所要的对象类 型,这里选commandbutton来定制一个命令按钮用户对象。在 用户对象画板中设计commandbutton的属性、时间、函数。 这个例子中,我们给该用户对象定义一个用户事件以响应 用户的回车键操作。用户事件名为“ue_enter”,事件号选 “pbm_keydown”,在该事件中输入如下代码: if keydown(keyenter!) then this.triggerevent(clicked!) End if 保存改用户对象名为u_commandbutton。
3.
14.3用户对象使用编程实例
例:利用用户对象实现以下功能:当焦点落在命令按钮上时,按回 车键能代替鼠标单击。在数据窗口中,按回车键可以跳到下一个 输入项,而不是下一行。当在最后一行的最后一列按回车键时, 将增加一个空行。在最后一行按向下的箭头键时,也增加一个空 行。 步骤: 1)创建一个标准可视用户对象,从commandbutton继承而来。为 之增加自定义事件ue_keyenter,事件号为pbm_keydown。在 自定义事件ue_keyenter中输入以下代码: if keydown(keyenter!) then this.triggerevent(clicked!) end if
2)创建标准可视用户对象、,它从datawindow数据窗口继承而来。 为之增加两个自定义事件。 ①自定义事件ue_keyenter,事件号pbm_dwnprocessenter。该事件 功能是按回车键可以跳到下一个输入项。在最后一行的最后一列按回 车键,将增加一个空行。 代码如下:
int col, colnum long row colnum=integer(this.Object.DataWindow.Column.Count)//求数窗的列数 col=getcolumn()//求当前列 row=getrow()//求当前行 if col<colnum then //当前列不是最后一列 setcolumn(col+1)//将下一列变为当前列 else if row<rowcount() then//当前列是最后一列,但当前行不是最后一行 setrow(row+1)//将下一行的第一列变为当前列 scrolltorow(row+1) setcolumn(1) else//当前列是最后一列且当前行是最后一行 row=insertrow(0)//增加一行 setrow(row)//将新行的第一列变为当前列 scrolltorow(row) setcolumn(1) end if end if return 1//放弃原来的操作
1. 创建标准可视用户对象 标准可视用户对象是对PB现有控件的扩充,从可 视的系统标准控件继承而来的用户对象。 例:PB的命令按钮只能用鼠标单击,而不响应回 车键。但用户一般都希望能支持回车键操作。我们 可以通过定义用户事件,但需要对每个用到的命令 按钮分别定义用户事件,十分繁琐。现在我们可以 利用标准可视用户对象来定制一个用户对象,既能 用鼠标单击,又能按回车键操作。定义后,该用户 对象与标准控件一样使用。
2.
使用可视用户对象
•
可视用户对象定义后,就可以像标准控件那样使 用。在窗口打开后,单击工具栏上的控件工具箱中 的用户对象user object按钮,在出现的标题为 “select object”的窗口中选择合适的用户对象即可。 如果选择的用户对象在选择前没有关闭,该用户对 象将不能被加载到窗口中,并会弹出一个错误提示 框,即需要先将用户对象画笔关闭后才可以在窗口 中添加用户对象。 修改用户对象 打开用户对象后,就可修改。
②用户事件ue-keyarrow,事件号为pbm_dwntabdownout, 该事件的主要功能:在最后一行按向下的箭头键时,增加一个空行。 代码如下: long row row=insertrow(0) setrow(row) scrolltorow(row)
4.
创建定制可视用户对象
定制可视用户对象是将多个控件以及可视用户对象组合为 一个整体,完成一定的功能和操作。 选择new|object|custom visual,单击ok按钮,将打开定 制可视用户对象画板,该界面与创建窗口的界面类似。 注意:可视用户对象中的控件的大小、位置等属性不能在 窗口上改变,而只能在定制可视用户对象画板上修改。 创建的可视用户对象作为一个整体来使用,与其他用户对 象的一个明显差别是:定制可视用户对象中包括多个控件。在窗口 中的代码要控制定制可视用户对象中的控件时,需要如下格式来控 制: 用户对象名.控件名.属性或函数 例:uo_1.cb_ok.text=‘确定’
14.2类用户对象
类用户对象没有可视成分,它们主要用于将一些可重用的 业务逻辑或者属性和函数整合成为一个独立的整体使用。在创建 类用户对象时需要指定实例变量和对象级函数。类用户对象有两 种类型:标准类用户对象和定制类用户对象。
– 标准类用户对象(Standard Class User Object):从不可视对象(例 如事务对象或者定时对象)继承而来。通过修改标准类用户对象增加 实例变量或函数的功能。创建了标准类用户对象后就可以在应用程 序中使用创建的对象,而不是使用PowerBuilder提供的对象。 – 定制类用户对象(Custom Class User Object):用于将函数、实例 变量或者结构封装在一起,实现某个业务规则或者处理过程。例如, 对一组数据进行统计,计算出最大值、最小值。定制类用户对象中 不能包含可视的组件。