PB 14第14章 用户自定义对象
如何在PB中同时“继承”多个用户自定义数据窗口对象

如何在PB中同时“继承”多个用户自定义数据窗口对象1. 基本功能对象: 具有单一功能的,独立的,用户自定义的对象.---- 2. 中间层对象: 把自己捕获到的事件以某种方式传递给基本功能对象实例变量, 以完成对基本功能对象相应的事件脚本的调用. 被继承, 但不继承任何其它对象.---- 另做一个用户自定义数据窗口对象,它不继承任何对象, 称之为中间层对象, 在中间层对象中为每个需要用到的基本功能对象声明一个实例对象变量, 在中间层对象的事件中去调用实例对象相应的事件. 使用时继承中间层对象, 以完成对基本对象的选择与调用.(见图一)---- 实现举例:---- 1. 基本功能对象制作:---- 新建二个数据窗口用户对象, 分别命名为: Uo_DwA, Uo_DwB . 在Uo_DwA 的Clicked 事件中写一行脚本:---- MessageBox ( ' Uo_DwA ' , ' Uo_DwA 的单击事件')---- 在Uo_DwB 的Clicked 事件中写一行脚本:---- MessageBox ( ' Uo_DwB ' , ' Uo_DwB 的单击事件')---- 2. 中间层对象制作:---- 2.1新建一个数据窗口用户对象, 命名为Uo_DwInterlayer .---- 2.2为中间层对象声明二个实例变量:---- GraphicObject Igo_BaseDwObject[] //每一个元素是一个基本对象的实例引用Integer Ii_BaseDwObjectNumber //保存元素的个数.---- 2.3. 加一个用来注册的对象函数, 用来注册基本功能对象. Uf_Register (GraphicObject a_obj[] , DataWindow adw_object)---- 函数内容:Long Ll_CirculaterIi_BaseDwObjectNumber = UpperBound (A_Obj[])FOR Ll_Circulater = 1 TO ii_basedwobjectnumberIgo_BaseDwObject[Ll_Circulater] =A_Obj[Ll_Circulater]// 下行脚本用来注册基本功能对象中的实例变量Idw_THIS (说明见下文)//Igo_BaseDwObject[Ll_Circulater].FunctionDynamic Uf_RegisterDwo ( Adw_Object)END FORReturn---- 2.4为中间层对象中加入每个基本功能对象拥有用户自定义事件, 在中间层对象的每个事件中加入如下脚本(事件Clicked):Long Ll_Circulater//调用被注册过的每个基本功能对象的相同的事件脚本FOR Ll_Circulater = 1 TO Ii_BaseDwObjectNumber//如果当前事件为EditChanged , 则把下行脚本中的Clicked(xpos , ypos , row , dwo) 部分替换为EditChanged(row,dwo,data)Igo_BaseDwObject [Ll_Circulater].EventDynamic Trigger Clicked (xpos , ypos , row , dwo)END FORReturn---- 3. 新建一个窗口, 命名为W_TestInterlayer . 在窗口中放置中间层对象: Uo_DwInterlayer . 默认控件名: Dw_1. 然后在控件Dw_1的Constructor 事件中对需要引用的基本功能对象进行注册, 即可实现引用基本功能对象的目的. 基本功能对象可以是任意个. 在Dw_1 的Constructor 事件中加入如下脚本://注册基础数据窗口对象GraphicObject Lgo_BaseDwObject []//声明一个可变长度的一维对象数组//建立对象数组元素的实例, 以便对Uo_DwA进行引用Lgo_BaseDwObject[1] = Create Uo_DwA//建立对象数组元素的实例, 以便对Uo_DwB进行引用Lgo_BaseDwObject[2] = Create Uo_DwB ////用中间层函数注册对象数组和本数据窗口对象.Uf_Register ( Lgo_BaseDwObject[] ,THIS)Return---- 4. 运行窗口W_TestInterlayer , 单击DW_1 , 会依次弹出2个消息框.---- 在实际应用中, 由于基本功能对象是被引用的而非继承, 所以基本功能对象脚本中的代词THIS为空, 为此:---- 需要在基本功能对象中声明一个实例变量: DataWindow Idw_THIS .---- 加一个注册函数用来为实例变量Idw_THIS 赋值. 函数名称Uf_RegisterDwo (DataWindow , Adw_THIS) . 函数内容:Idw_THIS = Adw_THISReturn---- 对象中所有对数据窗口操作的函数前都必须加上“Idw_THIS.”, 进行完全路径的引用. ---- 因为这些基本功能对象被继承过,为了向前兼容, 所以要在它们的Constructor 事件中写入如下脚本:IF Not IsValid (Idw_This) THENIdw_This = THISEND IFRetrun---- 以便对实例变量Idw_THIS 自动赋值.。
第14章 为演示文稿添加动画和交互效果

4.复制动画效果 在PowerPoint 2013中,若用户要将设置好的动画应用到其他的对象上,此时可以使用 “动画刷”复制动画。选中要复制的动画效果,然后单击“高级动画”组中的“动画刷” 按钮,单击要应用该动画效果的对象,可看到该形状也应用了该动画效果。若双击“动画 刷”按钮,可将复制的动画效果连续应用于其他对象,否则只能应用一次。
2.设置动画选项 为对象添加动画效果后,可利用“计时”组设置动画的开始播放 方式、持续时间和延迟时间。 选择要设置的动画,在“计时”组的“开始”下拉列表可选择动 画的开始方式,再设置其持续时间和延迟时间。为对象添加动画 效果后,用户还可以为某些动画设置效果选项。不同的动画效果, “效果选项”列表中的选项也不相同。 单击时:在放映幻灯片时,只有单击鼠标时才会开始播放动画; 与上一动画同时:在放映幻灯片时,动画自动与上一动画效果同 时播放;上一动画之后:在放映幻灯片时,播放完上一动画效果 后自动播放该动画;持续时间:播放动画的时间,单位为秒,时 间越短动画速度越快。
2.创建进入动画 “强调”动画是指在放映幻灯片时,为已显示在幻灯片中的对象设置的动画效果,目的是 为了强调幻灯片中的某些重要对象,以引起观众注意。它包括使对象放大或缩小、更改颜 色等。 选中要设置动画效果的对象,单击“动画”选项卡“动画”组中的“其他”按钮 ,展开 动画列表,在“强调”动画列表中选择一种动画效果,即可看到添加的强调动画效果。
若要创建自定义动作路径动画,可选中要创建自定义路径动画的对象,在“动作路径”动 画列表中选择“自定义路径”选项,此时鼠标指针变为十字形状,按下鼠标左键并在幻灯 片上拖动以绘制路径,绘制完毕按【Enter】键,即可看到绘制的动作路径。
对于直线路径,用户可直接拖动这两个符号来改变运动的起点和终点位置。 如果是曲线或折线路径,要改变路径的起点、终点和形状,需要右击路径,在弹出的快捷 菜单中选择“编辑顶点”选项,此时在路径上显示黑色顶点,可通过拖动相应的顶点来调 整路径的形状。要退出顶点编辑状态,只需在路径之外的任意区域单击即可。
pb user object 的用法

pb user object 的用法PB User Object 的用法PB User Object(以下简称”PBUO”)是在PB(Product Builder)平台上用于表示和管理用户的重要对象之一。
在这篇文章中,我们将详细讲解一些PBUO的用法。
创建 PBUO要创建一个PBUO,可以使用以下代码:PBUO myUser = new PBUO();这将创建一个空的PBUO对象,并将其分配给名为myUser的变量。
设置 PBUO 的属性PBUO对象有许多可设置的属性,下面是一些常用的属性及其设置方法:设置用户名("john123");可以通过调用setUsername方法来设置PBUO的用户名。
在示例中,用户名被设置为john123。
设置密码("passw0rd");要设置PBUO的密码,可以使用setPassword方法。
在示例中,密码被设置为passw0rd。
设置电子邮件("");可以使用setEmail方法设置PBUO的电子邮件地址。
在示例中,电子邮件地址被设置为``。
获取 PBUO 的属性PBUO对象的属性可以使用相应的getter方法获取。
获取用户名String username = ();通过调用getUsername方法,可以获取PBUO的用户名并将其赋值给username变量。
获取电子邮件String email = ();可以使用getEmail方法获取PBUO的电子邮件地址,并将其赋值给email变量。
验证用户名和密码要验证PBUO的用户名和密码是否匹配,可以使用以下方法:boolean isValid = ("john123", "passw0rd");checkCredentials方法将用户名和密码作为参数,并返回一个布尔值,表示用户名和密码是否匹配。
保存和更新 PBUO要将PBUO保存到数据库中,可以使用以下方法:();这将把当前的PBUO对象保存到数据库中。
2级C语言第14章 结构体共用体和用户定义类型

例 struct student { int num; char name[20]; char sex; } stu1[2]={{112,“Wang Lin”,„M‟},{19, “Li Jia”, „W‟};
struct 形式三: { 类型标识符 成员名; 类型标识符 成员名; ……………. 不管那种赋值,不允许跳过前面的成员给后 }结构体变量={初始数据}; 面的成员赋值,但可以只给前面的成员赋值
例 ,后面未赋值的数值数据按0处理,字符数据 struct { int num; 按‘\0‟,字符串数据按空串处理。 char name[20]; char sex; int age; char addr[30]; }stu1={112,“Wang Lin”,„M‟,19, “200 Beijing Road”};
二、 结构体变量的定义
1. 先定义结构体类型,再定义结构体变量 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; struct student stu1,stu2; STU stu1,stu2; #define STU struct student STU { int num; char name[20]; char sex; int age; float score; char addr[30]; };
2. 定义结构体类型的同时定义结构体变量
struct student struct
{ int num;
{ int num; 用无名结构体直接定义 char name[20]; char name[20]; 变量只能一次 char sex; char sex; int age; int age; float score; float score; char addr[30]; char addr[30]; }stu1,stu2; } stu1,stu2;
pb的customclass创建流程

pb的customclass创建流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor.I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!PB(Protocol Buffers)中CustomClass的创建流程详解Protocol Buffers(简称PB)是Google开发的一种数据序列化协议,它允许开发者定义数据结构,然后生成可以在多种语言中使用的代码,用于序列化和反序列化这些数据。
PB教程第十四章

14.1 名词14.1.1 注释行注释行用来书写说明,它有两种写法:以“//”开头,其后书写注释内容,常用于单行注释。
“/*…*/”中间的部分为注释,便于多行说明。
例如://这是一个单行注释INTEGER II = I+1/*这是多行注释这是多行注释这是多行注释这是多行注释*/14.1.2 标识符标识符是指在脚本中使用的变量、标号、窗口、控制、菜单以及引用的对象的名称。
它的命名规则有:1. 必须一字母开头2. 最长40个字符,并且中间不能插入空格。
3. 区分大小写4. 表示符可以有字母、数字和如下的特殊字符组成:短划线“-”、下划线“_”、美元符号“$”,号码符号“#”和百分符号“%”。
例如:butName,main_win,code2都是合适的标识符。
14.1.3 标号尽管在我们不提倡在程序设计当中使用GOTO语句,但是POWER SCRIPT仍然支持它。
可以使用标号来指明转移的地址。
标号的写法是在标识符的后面加上冒号。
例如:ADDRESS1:PROCESSDATA()...或者ADDRESS2:PROCESSDATA()14.1.4 特殊字符在字符串当中可以包括特殊字符。
它们的写法如下:新行(NEWLINE):~n制表符(TAB):~t垂直制表(VERTICAL TAB):~v回车(CARRIGE RETURN):~r换行(FORMFEED):~f退格(BACKSPACE):~b双引号:~单引号:~弯曲符:~~也可以使用在~符号的后面跟上一个数的方式来表示这个数值对应的ASCII字符。
如~888,~ h16(十六进制),~o999(八进制)。
14.1.5 空值空值(NULL)是在与数据库交换数据的时候使用的一种特殊值。
这与空字符、数值零、和日期00000000不同。
空值既不是零,也不是非零的任何数值。
14.1.6 保留字保留字是指被POWER BUILDER内部使用,而不能作为标识符的单字,它们有:alias,and,autoinstantiate,call,case,choose,close,commit,connect,constant,contin ue,create,cursor,declare,delete,describe,descriptor,destroy,disconnect,do,dynamic,else,el seif,end,enumerated,event,execute,exit,external,false,fetch,first,for,forward,from,funct ion,global,goto,halt,if,immediate,indirect,insert,into,intrinsic,is,last,library,loop,next, not,of,on,open,or,parent,post,prepare,prior,private,privateread,privatewrite,procedure,pr otected,protectread,protectwrite,prototypes,public,readonly,ref,return,rollback,rpcfunc, select,selectblob,shared,static,step,subroutine,super,ssytem,systemread,systemwrite,th en,this,to,trigger,true,type,until,update,updateblob,using,varibles,while,with,within,_ debug14.1.7 this代名词this代表窗口、用户对象、菜单、应用对象或者控制对象自身。
PowerBuilder实用教程第9章 用户自定义事件

用户事件编程实例
⑯为数据窗口“dw_1”再定义一个用户事件“u_keyarrow”,事件号为“pbm_dwntabdo
在定义用户事件时,可以定义事件参数。但TriggerEvent和PostEvent不能带事件参数(但可以 为Message传送用户消息),因此需用下面的格式触发: object_name. [Trigger | Post] [Static | Dynamic] EVENT event_name( [para_list] )
为实现如图9.5所示的功能,可用自定义事件。 (1)创建一个“student.pbl”,其中 “ApplicationObject”为“stu”,再建一个窗 口“w_uevent”,窗口中的控件分别为 “dw_1”“cb_append”“cb_insert”“cb_d elete”“cb_retrieve”“cb_update”和 “cb_return”。 建立数据窗口对象“d_xs”,将“dw_1”的 “DataObject”属性设为“d_xs”。
PowerBuilder实用教程(第5版)
第9章 用户自定义事件
——用户事件号
用户事件号
PowerBuilder没有提供事件标记的说明手册,但大部分可以从标记名推断其含义。表9.1列出 了部分常用事件标记的前缀及其含义,表9.2列出了部分常用事件标记及其含义。
前 缀 pbm_cb pbm_dw pbm_dde pbm_e 含 义 通用对话框消息 数据窗口 前 缀 pbm_lb pbm_lv 列表框 列表视图(Listview) 树形视图(Treeview) 窗口 含 义
PowerBuilder实用教程(第5版)
第9章 用户自定义事件
——定义用户事件
在下列情况下经常使用用户事件。 (1)解决对象与窗口之间的通信问题。用户事件可以通过参数进行信息传递。 (2)响应特殊操作,这些操作没有相应的PowerBuilder预定义事件。例如,大多数的人都习 惯于在每项数据录入后按【Enter】键,转到下一个输入项。但在Windows环境下,系统都是默认 使用【Tab】键或【Shift+Tab】键转换到下一个数据项或上一个数据项,而用户按【Enter】键, 系统会将焦点转到下一条记录的第一个输入项上。 (3)支持用户通过多种方式完成同一个功能。例如,既允许用户通过单击窗口中的按钮完成, 也允许用户通过选择选单项完成。使用用户事件后,就只需要在一个地方编写代码,在需要使用该 功能的地方触发相应的用户事件就可以了。
第14章 用户自定义对象

图14.8 选择定制可视用户对象
14.1.4 创建定制可视用户对象
在图14.8Object页中选择Custom Visual项,单击OK按钮或直接双击Custom Visual项, 将打开定制可视用户对象画板,如图14.9所示。该界面和创建窗口的界面相似。在左上角的 窗口上放置所需的控件和已定义的可视用户对象,并设置各控件的属性、字体、大小以及该 定制可视用户对象的属性、大小等作为该用户对象的默认值。还可以定义用户函数和用户事 件,并给某些事件编写代码。 注意该可视用户对象中的控件的大小、位置等属性不能在窗口上改变,而只能在如图 14.9所示的定制可视用户对象画板中修改。
图14.9 定制可视用户对象画板
14.1.4 创建定制可视用户对象
创建的定制可视用户对象作为一个整体来使用,与其他用户对象的一个明显差别是: 定制可视用户对象中包括了多个控件。窗口中的代码控制定制可视用户对象中的控件时, 需要用“用户对象名+控件名+属性或函数”这样的格式。 例如:
uo_1.cb_ok.text="确定" st_1.text=uo_1.sle_1.text 控件 uo_1.lb_1.additem(sle_2.text) //lb_1是用户对象中的控件,sle_2是窗口上的控件 //cb_ok是用户对象中的一个控件 //sle_1是用户对象中的一个控件,st_1是窗口上的一个
14.1.2 使用可视用户对象
可视用户对象定义好后,就可以像标准控件那样使用。在窗口打开后,点击工具栏上 的控件工具箱中的用户对象User Object图标按钮,如图14.5所示。
图14.5 控件工具箱
14.1.2 使用可视用户对象
接着将出现标题为“Select Object”的窗口,在其中列出了当前pbl文件中所有的用户对 象,选择一个用户对象,如图14.6所示,然后单击OK按钮或直接双击所选的用户对象。这 里选u_commandbutton。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
14.1.1 创建标准可视用户对象
14.3 用户对象使用编程实例
l 一个事件是ue_keyenter,事件号为pbm_dwnprocessenter。该事件 的主要功能是按回车键可以跳到下一个输入项,不是下一行。当在 最后一行的最后一列按回车键时,将增加一个空行。 l 一个事件是ue_keyarrow,事件号为pbm_dwntabdownout.。该事件 的主要功能是在最后一行按向下的箭头键↓时,增加一个空行。 l 自定义函数是uf_getcolnumber(),无入口参数,返回值表示数据窗 口中的列数。该函数的功能就是求当前数据窗口中的列的数目。 l 在该用户对象的自定义函数uf_getcolnumber()中输入以下代码: //返回当前数据窗口的列数 long row int col,oldcol,ret row=this.getrow() oldcol=this.getcolumn() //oldcol为当前列 if row<1 then return 0 //数据窗口为空则返回
给该用户对象定义一个用户事件以响应用户的回车键操作。用户 事件名为“ue_enter”,事件号选“pbm_keydown”。
14-4 在用户对象中定义用户事件
14.1.1 创建标准可视用户对象
在该事件中输入代码: if KeyDown(KeyEnter!) then //如果是回车键,则触发鼠标单击事件 this.TriggerEvent(Clicked!) end if 保存该用户对象,名为u_commandbutton。 定义了一个可视用户对象u_commandbutton,该对象除具备标准 的CommandButton命令按钮的属性、事件、函数外,还有用户自 定义事件ue_keyenter,当焦点落在该控件上时,用户按回车键将 触发该事件。
14.2.3 创建定制类用户对象
定制类用户对象是用户自己设计的对象,用于封装不需要可视特 性的处理过程。这些对象并不继承某个对象或控件,完全由用户 通过定义实例变量、函数、事件来实现。 定 制 类 用 户 对 象 只 有 两 个 系 统 预 定 义 事 件 : Constructor 和 Destructor。其创建过程和使用方法完全类似于标准类用户对象。 要将用户对象删除,只有在Library工作区才能实现。方法是打开 Library工作区,右击要删除的对象,出现弹出式菜单,选择 Delete,打开一个提示框,选择Yes,删除所选的对象。参见PBL 库管理器。
14.2.2 使用类用户对象
使用类用户对象时,需要在代码中创建它的一个实例 。 步骤为: (1) 说明类用户对象类型的变量,用CREATE语句创建该对象的 一个实例; (2) 在变量的整个作用域中,代码都能访问该对象的属性、事件、 函数,就像使用系统预定义对象那样(比如事务处理对象 SQLCA); (3) 不再使用该用户对象时,使用DESTROY语句删除该对象,以 释放它所占的内存。
14.3 用户对象使用编程实例
(3) 再创建标准可视用户对象,也是从标准控件commandbutton命令 按钮继承来的。给该用户对象增加自定义事件ue_keyenter,事件 号为pbm_keydown。该用户对象能够响应鼠标和回车键操作,并 关闭控件所在的窗口。 l 在该用户对象的自定义事件ue_keyenter中输入以下代码: if KeyDown(KeyEnter!) then //如果是回车键,则触发鼠标单击事件 this.TriggerEvent(Clicked!) end if l 在该用户对象的事件click中输入以下代码: close(parent) //关闭控件所在的窗口 保存该用户对象,名为u_cb_return。 (4) 创建标准可视用户对象,它是从标准控件datawindow数据窗口继 承来的。给该用户对象增加两个自定义事件和一个自定义函数:
图14-1 创建用户对象
14.1.1 创建标准可视用户对象
打开标题为“Select Standard Visual Type”的窗口,选择所要的对象 类型,点击Ok按钮。这里我们选择commandbutton来定制一个命令 按钮用户对象。
图14-2 选择对象类型
14.1.1 创建标准可视用户对象
图14-6 选择用户对象
14.1.3 修改用户对象
修改用户对象。选择 工具栏的Open图标, 打开标题为“Open” 的窗口。 2.选择pbl库 在Application Libraries中选择要修 改的用户对象所在的 pbl库文件,在对象类 型Object Type中选择 User Objects,选择要 修改的用户对象,点 击OK按钮或直接双击 所选的用户对象,将 打开用户对象定义画 板,如前图14-3所示。
第14章 用户自定义对象
14.1 可视用户对象 14.2 类用户对象 14.3 用户对象使用编程实例
14.1.1 创建标准可视用户对象
标准可视用户对象在现有控件基本功能的基础上增加应用程序需要的功能。继承 了原始控件的各种特征,包括属性、事件和函数。 例如,命令按钮只能用鼠标点击,而不响应回车键,可以利用标准可视用户对象 来定制一个用户 对象,既能用鼠 标点击,又可以 按回车键操作。 点击主窗口的工 具栏图标按钮 New 或 选 择 主 菜 单File的New子菜 单,将打开标题 为“New”的窗口, 选择Object页。
注意: 该可视用户对象中的控件的大小、位置等属性不能在窗口上改变, 而只能在如图14-9所示的定制可视用户对象画板中修改。 创建的定制可视用户对象作为一个整体来使用,与其它用户对象的 一个明显差别是:定制可视用户对象中包括了多个控件。窗口中的 代码控制定制可视用户对象中的控件时,需要用“用户对象名+控件 名+属性或函数”这样的格式。 例如: uo_1.cb_ok.text=”确定” //cb_ok是用户对象中的一个控件 st_1.text=uo_1.sle_1.text //sle_1是用户对象中的一个控件,st_1 是窗口上的一个控件 uo_1.lb_1.additem(sle_2.text) //lb_1是用户对象中的控件,sle_2是窗 口上的控件
14.2.1 创建标准类用户对象
选择主窗口工具栏上的图标按钮New 或选择主菜单File的New子 菜单,将打开标题为“New”的窗口,选择Object页。
图14-12 定义标准类用户对象
14.2.1 创建标准类用户对象
在图14-12的 Object页中选择Standard Class项,点击OK或直接 双击Standard Class项,打开标题为“Select Standard Class Type” 的窗口来选择创建的用户对象所继承的内部系统对象。
图14-8 选择定制可视用户对象
14.1.4 创建定制可视用户对象
定制可视用户对象画板。在左上角的窗口上放置所需的控件和已 定义的可视用户对象。还可以定义用户函数和用户事件,并给某 些事件编写代码。
在这里放置控件和 已定义的可视用户 对象
图14-9 定制可视用户对象画板
14.1.4 创建定制可视用户对象
图14-11 外部可视用户对象画板
14.1.5 创建外部可视用户对象
图14-11中,在LibraryName中输入外部用户对象所在的DLL文件 名,或者单击Browse按钮选择DLL文件;在Class Name编辑框中 键入DLL中的注册类名(该类名通常由生产DLL的厂商提供);在 “Text”编辑框中输入显示在控件上的文本(并非都需要此项); 根据需要设置其它属性;说明用户对象所需的函数、事件、变量、 结构;编写用户对象的各种事件处理程序;最后保存用户对象。 定义了外部可视用户对象后,就可以在窗口、定制可视用户对象 等多个地方运用该对象了。 注意:要创建外部可视用户对象,必须知道外部用户对象所在的 DLL文件名和注册类名。
14.2.2 使用类用户对象
例如: 我们已经创建了一个标准类用户对象u_datastore,它从数据存储对 象Datastore继承得到,那么代码中可以这样使用: u_datastore myds //声明u_datastore类型的变量myds myds = CREATE u_datastore //创建用户对象实例myds myds.DataObject = „d_user_search‟ //将数据窗口对象与类用 户对象联系起来 myds.SetTransObject(SQLCA) //设置类用户对象使用的事务对象 ret = myds.Retrieve(math) //检索数据据 ...... //应用程序所需的其它处理 DESTROY myds //使用后删除用户对象
1.选择目标
4.选择要修改的用 户对象 3.选择User Objects
图14-7 打开用户对象
14.1.4 创建定制可视用户对象
定制可视用户对象是将多个控件以及可视用户对象组合成一个整体, 完成一定的功能和操作。选择主窗口工具栏上的图标按钮New 或选择 主菜单File的New子菜单,将打开标题为“New”的窗口,选择Object 页。
14.1.5 创建外部可视用户对象
使用外部控件的目的通常是为了完成PB本身难以完成或不支持的功能。 选择主窗口工具栏上的图标按钮New 或选择主菜单File的New子菜单,选择 Object页。
图14-10 创建外部可视用户对象
14.1.5 创建外部可视用户对象
在图14-10 Object页中选择External Visual项,点击OK按钮或直 接双击External Visual项,将打开外部可视用户对象画板。
应该设计一个统一的按钮,无须在每个用到的地方分别编程。使 用用户对象可以方便的解决问题。 实例创建步骤如下: (1) 创建一个ustudent.pbl,其ApplicationObject为ustu,再建一 个窗口w_uobject。 (2) 创建标准可视用户对象,它是从标准控件commandbutton命 令按钮继承来的。给该用户对象增加自定义事件ue_keyenter,事 件号为pbm_keydown。该用户对象能够响应鼠标和回车键操作。 在该用户对象的事件ue_keyenter中输入以下代码: if KeyDown(KeyEnter!) then //如果是回车键,则触发鼠标单击事件 this.TriggerEvent(Clicked!) end if 保存该用户对象,名为u_commandbutton。