用户对象课件.pptx

上传人(卖家):ziliao2023 文档编号:6211750 上传时间:2023-06-12 格式:PPTX 页数:23 大小:180.67KB
下载 相关 举报
用户对象课件.pptx_第1页
第1页 / 共23页
用户对象课件.pptx_第2页
第2页 / 共23页
用户对象课件.pptx_第3页
第3页 / 共23页
用户对象课件.pptx_第4页
第4页 / 共23页
用户对象课件.pptx_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、第12章 用户对象 在面向对象程序设计中,有两个重要的概念:对象和类。在PowerBuilder中,系统提供了很多标准的对象和类,它们有各自的功能、表现特征、属性、事件和函数。12.1 用户对象的概念 用户对象只需定义一次,就能够反复多次使用,并且每修改一次,就能把修改结果反映到所有使用该用户对象的地方。在PowerBuilder中用户对象分为两类:可视用户对象(Visual User Object)和类(非可视)用户对象(Class User Object)。1、可视用户对象、可视用户对象 可视用户对象是一个可视的控件或一组完成一定功能的控件。可视用户对象共分为以下三类:(1)标准可视用户对

2、象(Standard Visual)标准可视用户对象是对PowerBuilder现有控件的扩充,它在现有控件的基本功能的基础上增加应用程序需要的功能。标准可视用户对象继承了原始控件的各种特征,包括属性、事件和函数。结束放映第一页上一页下一页最后一页12.1 用户对象的概念(2)定制可视用户对象(Custom Visual)定制可视用户对象是若干标准控件或已经存在的可视用户对象的组合,它把不同的部件集成在一起,每一部分都具有其原有的属性、事件,都可在用户对象画板中编写脚本。而在使用时又作为一个整体,一旦将该对象放在窗口上之后,就不能再为其中某一组成部件的事件进行编码了。(3)外部可视用户对象(E

3、xternal Visual)外部可视用户对象实际上就是在PowerBuilder应用程序中使用其他语言(比如C或C+)编写的控件,这些可视控件存放在DLL文件中。通常是为了完成PowerBuilder本身难以完成或不支持的功能。2、类用户对象、类用户对象类用户对象是对不可视组件的逻辑和功能的封装。PowerBuilder中有两种类型的类用户对象:标准类用户对象和定制类用户对象。类用户对象最主要的优点就是真正的不可视。所以它不消耗GUI资源,仅仅消耗对象和它的工作结构以及为动态创建它所需的内存。(1)标准类用户对象(Standard Class)标准类用户对象是对PowerBuilder的标准

4、对象的继承,并且允许用户用自己的代码扩充缺省的行为以便使它们适应用户的需要。结束放映第一页上一页下一页最后一页12.1 用户对象的概念(2)定制类用户对象(Custom Class)定制类用户对象并不继承PowerBuilder中的任何基本对象,只通过用户自己定义的实例变量、函数以及事件来完成特定的功能。定制类用户对象只有两个系统预定义事件:Constructor和Destructor。12.2 用户对象的创建在PowerBuilder中,单击PowerBar工具条栏中的New图标,在弹出的对话框中选择PowerBuilderObject标签页,选中你要创建的用户对象的类型,单击OK按钮即可创

5、建。12.2.1 创建标准可视用户对象 单击PowerBar工具条栏中的New图标,在弹出的对话框中选择PowerBuilderObject标签页中的StandardVisual项,单击OK按钮。弹出Select Standard Visual Type对话框,选择一种标准可视类型对象,单击OK按钮即可创建。下面以实例来说明标准可视用户对象的创建过程。现在要创建的标准可视用户对象是一个用来关闭窗口的按钮对象u_cb_close,步骤如下:结束放映第一页上一页下一页最后一页12.2.1 创建标准可视用户对象(1)在Select Standard Visual Type对话框中选择commandb

6、utton,单击Ok按钮,弹出User Object画板,此画板同窗口的编辑画板类似,只是有一部分工具不可用。(2)按钮的Text属性初始设置为none,在按钮上单击鼠标右键然后选择Properties菜单项,打开属性对话框,将按钮的Text属性改为“退出”。(3)在按钮上单击鼠标右键然后选Script菜单项,打开脚本画板。在脚本画板中单击选择事件的下拉列表框的箭头,显示出命令按钮的预定义事件。为Clicked事件输入如下脚本:/u_cb_close的click事件Integer IsCancelIsCancel=MessageBox(“提示!”,“是否要退出?”,Question!,okca

7、ncel!)If IsCancel=0 Then Close(Parent)End If(4)单击PainterBar上的Return按钮返回。再单击Save按钮将新建的用户对象存盘,用户对象名存为u_cb_close。这样一个简单的用户对象就创建完成了。结束放映第一页上一页下一页最后一页12.2.2 创建定制可视用户对象 编程时经常会遇到数据的录入和修改,操作都十分类似。我们可以创建一个用户对象u_dataedit,它包括一个数据窗口控件、包括插入、删除和提交按钮各一个。我们只要给它指定一个数据窗口对象,就可以进行插入、删除和更新操作。具体操作步骤如下:(1)单击PowerBar工具条栏中的

8、New图标,在弹出的对话框中选择PowerBuilderObject标签页,选中Custom Visual项,单击OK按钮,打开User Object画板。(2)在定制可视用户对象中放置控件的方法与在窗口中放置控件一样。单击窗口控件下拉按钮,在弹出的工具条中选择所需的控件和用户对象。在用户对象u_dataedit中放置三个按钮、一个数据窗口控件。(3)将三个按钮的Text属性分别改为“插入”、“删除”和“提交”,将Name属性分别改为cb_insert、cb_delete和cb_save。分别为它们的Clicked事件编写如下脚本:结束放映第一页上一页下一页最后一页12.2.2 创建定制可视用

9、户对象/cb_insert的Clicked事件的脚本/在当前行之前插入一条新的记录int li_row,li_cur_rowli_cur_row=dw_l.GetRow()li_row=dw_l.InsertRow(li_cur_row)dw_l.ScrollToRow(li_row)dw_l.SetFocus()/cb_delete的Clicked事件脚本Long ll_cur_rowll_cur_row=dw_l.GetRow()dw_l.DeleteRow(ll_cur_row)dw_l.setfocus()结束放映第一页上一页下一页最后一页12.2.2 创建定制可视用户对象/cb_sa

10、ve的Clicked事件脚本String ls_errtextIf dw_l.Update()=l Then Commit;Else Ls_errtext=SQLCA.SQLErrtext RollBack;MessageBox(”存盘失败!”,ls_errtext)End If(4)为数据窗口dw_l的Rowfocuschanged事件输入如下脚本:/dw_l的rowfocuschanged事件/将当前行设置为选中行this.SelectRow(0,False)this.SelectRow(currentrow,true)结束放映第一页上一页下一页最后一页12.2.2 创建定制可视用户对象为

11、了更好地实现用户对象的功能,我们不但可以使用对象原有的事件,还可以自己定制一些事件。下面我们为u_dataedit添加一个定制事件ue_init。在Script编程窗口中,选u_dataedit对象和New Event事件,将弹出定制事件的对话框。在Event Name下添加事件名称ue_init,设置Argument Name为datawinname,Argument Type为String,Pass By为Value,Return Type为Integer,Event ID为none。为新建的定制事件编写脚本。/u_dataedit的ue_init事件脚本int li_numberdw_l

12、.DataObject=datawinnamedw_l.SetTransObject(sqlca)li_number=dw_l.Retrieve()Return li_number 在使用时只能通过Post或Trigger语句来触发此事件,使用格式为:userobjectname.post|trigger event ue_init(datawindowname)结束放映第一页上一页下一页最后一页12.2.3 创建外部可视用户对象 单击PowerBar工具条栏中的New图标,在弹出的对话框中选择PowerBuilderObject标签页中的External Visual项,这将打开User O

13、bject设计界面。其他步骤与标准可视用户对象相同。12.2.4 创建标准类用户对象 创建一个标准类用户对象,应在单击PowerBar工具条栏中的New图标,在弹出的对话框中选择PowerBuilderObject标签页中的Standard Class项,这将打开Select Standard Class Type对话框,如图12.6所示,用户可以选择想要扩充的类用户对象。下面我们定义一个Transaction类型的用户对象,用于管理数据库连接。通过以下方法可以定义若干个函数用于不同的数据库事务。(1)在Select Standard Class Type对话框中选择Transaction,并

14、单击OK按钮进入User Object画板。(2)在函数列表框中选择Functions,新建一个函数f_connect_anywhere用于Adaptive Server Anywhere数据库建立连接,程序清单如下:结束放映第一页上一页下一页最后一页12.2.4 创建标准类用户对象/uf_connect_anywhere函数脚本this.DBMS=”ODBC”this.DbParm=”Connectstring=”+ar_dbfileConnect Using this;If this.SQLCODE=-1 Then MessageBox(”连接”,”不能连接到Adaptive Server

15、 Anywhere数据库!”)End IfReturn this.SQLCODE这样,一个简单的标准类用户对象就定义完成了。12.2.5 创建定制类用户对象创建一个定制类用户对象,应单击PowerBar工具条栏中的New图标,在弹出的对话框中选择PowerBuilderObject标签页中的Custom Class项,定制类画板与定制窗口画板或定制可视用户对象画板相似。Constructor:发生在窗口的Open事件之前或用户对象被动态地放置在窗口上时。Destructor:发生在窗口的Close事件之后或用户对象被动态地从窗口上取消时。结束放映第一页上一页下一页最后一页12.3 使用用户对象

16、 创建了用户对象后,在应用程序中就可以随时使用它们了。可视用户对象在使用前需要放置到窗口或其他定制可视用户对象上,类用户对象则需要在代码中通过编写程序来使用。12.3.1 使用可视用户对象 通过把可视用户对象放置到窗口或其他定制可视用户对象上来使用这些对象。(1)打开要放置可视用户对象的窗口。(2)从窗口画板的控件下拉列表中选择用户对象图标,系统打开Select Object对话框。(3)选择要使用的用户对象,单击OK,关闭对话框。(4)在窗口上要放置用户对象的地方单击,所选用户对象即出现在窗口上。在窗口或定制可视用户对象上放置了可视用户对象后,可以像使用标准控件那样为它命名、调整大小、调整位

17、置、编写事件处理程序等。需要注意的是,在窗口画板中不能直接修改所使用的用户对象。当需要修改时,应关闭窗口画板,然后使用用户对象画板进行修改。在代码中可以使用PowerScript函数OpenUserObject()或OpenUserObjectWithParm()动态地往窗口上添加用户对象,也可以使用CloseUserObject()函数将其删除。结束放映第一页上一页下一页最后一页12.3.2 使用类用户对象 类用户对象没有可视成分,它们不能像可视用户对象那样放置到窗口上。使用类用户对象时,需要在代码中创建它的一个实例,步骤为:(1)说明类用户对象类型的变量,用CREATE语句创建该对象的一个

18、实例。(2)在变量的整个作用域中,代码都能访问该对象的属性、事件、函数,引用方法依然使用点操作符,就像使用系统预定义对象那样(比如事务对象)。(3)不再使用该用户对象时,使用DESTROY语句删除该对象,以释放它所占用的内存。例如,创建了一个标准类用户对象u_ds,它从数据库存储对象继承得到,那么代码中可以这样使用u_ds:u_ds u_ds_delete /说明u_ds类型的变量u_ds_delete=CREATE u_ds /创建用户对象实例u_ds_delete.DataObject=“d_user_delete”/将数据窗口对象与类用户对象联系起来u_ds_delete.SetTran

19、sObject(SQLCA)/设置类用户对象使用的事务对象u_ds_delete.Retrieve()/检索数据/应用程序所需的其他处理DESTROY u_ds_delete /不用后删除该用户对象结束放映第一页上一页下一页最后一页12.4 窗口与用户对象间的通讯 用户对象是一个完成特定功能的封闭组件,与结构化程序设计中的子程序类似。窗口与可视用户对象之间交换信息的方法很多,归纳起来,比较好的通讯方式有三种:使用函数;使用用户事件;直接引用用户对象的属性。例如,用户对象控件uo_1中放置了一个单行文本编辑框sle_1,那么,在窗口的事件处理程序中可以给用户对象中的单行文本编辑框的Text属性直

20、接赋值,表述如下:uo_1.sle_1.text=”测试用户对象通讯”使用函数进行信息交换时,定义一些公共的(Public)用户对象级函数,利用这些函数把内部信息传递给窗口,或把窗口信息传递到用户对象内部。使用用户事件进行信息交换时,可以为用户对象定义一些用户事件以及相应的参数,这样也可以通过编写事件处理程序、触发事件来完成用户对象与窗口之间的通讯。结束放映第一页上一页下一页最后一页12.5 用户对象示例 下面通过两个例子完整地介绍使用用户对象的全过程,以进一步加深理解。例1:本例的要求是:使用用户对象实现日期的调整。初始日期为当前日期;当使用鼠标单击上下箭头时,可以上下调整日期;能够直接设置

21、为下周一的日期;并且能够触发显示当前的时间,如下图所示。日期调整功能是比较常用的,使用用户对象来实现比较适合,而下周一这种设置则具有特殊性,不适合使用用户对象。下面介绍实现的方法:(1)建立定制的可视用户对象uo_date,其中包含单行文本编辑框sle_1和垂直滚动条vsb_1。结束放映第一页上一页下一页最后一页12.5 用户对象示例(2)定义实例变量date id_date。(3)在对象级Constructor事件中加入如下脚本:id_date=today()sle_1.text=string(id_date,”yyyy-mm-dd”)(4)在vsb_1的Lineup事件中加入如下脚本:id

22、_date=RelativeDate(id_date,1)sle_1.text=string(id_date,”yyyy-mm-dd”)(5)在vsb_1的Linedown事件中加入如下脚本:id_date=RelativeDate(id_date,-1)sle_1.text=string(id_date,”yyyy-mm-dd”)(6)定义用户对象函数uof_display_time(boolean ar_datetime),实现日期和时间的显示,其脚本如下:结束放映第一页上一页下一页最后一页12.5 用户对象示例time It_timeif ar_datetime then It_time

23、=now()sle_1.text=string(It_time,”hh:mm:ss”)sle_1.textcolor=RGB(255,255,255)sle_1.backcolor=RGB(255,0,0)else sle_1.text=string(id_date,”yyyy-mm-dd”)sle_1.textcolor=RGB(0,0,0)sle_1.backcolor=RGB(255,255,255)end if(7)保存后退出。(8)建立窗口w_uo_date,类型为main。(9)在窗口上加入用户对象uo_1,原型为uo_date。结束放映第一页上一页下一页最后一页12.5 用户对象

24、示例(10)放置按钮cb_1,cb_1.text=”下周一”,其Clicked事件脚本为:date ld_month_dayint li_weekday,lld_month_day=uo_1.id_date /访问用户对象例程变更li_weekday=DayNumber(ld_month_day)l=7-li_weekday+1ld_month_day=RelativeDate(ld_month_day,l)uo_1.id_date=ld_month_dayuo_1.sle_1.text=string(uo_1.id_date,”yyyy-mm-dd”)/访问用户对象控件属性(11)放置按钮c

25、b_2,cb_2.text=”时间”,其Clicked事件脚本为:uo_1.uof_display_time(true)/调用用户对象函数timer(1)uo_1.uof_display_time(false)其功能是:当按下“时间”按钮后,通过调用用户对象函数(传递参数True),实现时间显示,同时设置1秒延时。定时结束后,调用用户对象函数(传递参数False),重新显示日期。结束放映第一页上一页下一页最后一页12.5 用户对象示例(12)放置按钮cb_3,cb_3.text=”返回”,其Clicked事件脚本为:Close(parent)(13)保存。例2:本例完成一个定制类用户对象的创建

26、,这个类(用户对象)可以实现在DataWindow中检索、更新、插入和删除数据,这些功能是通过它的方法(用户对象函数)来实现的。选择Declare Instance Variables标签声明实例变量如下:datawindow idw_parm /声明数据窗口变量 各个函数的参数及代码如下:/Function:uf_init/Purpose:对这个数据窗口保存一个引用/Scope:public/Arguments:adw_parm a DataWindow passed by reference/Returns:noneidw_parm=adw_parm结束放映第一页上一页下一页最后一页12.

27、5 用户对象示例/Function:uf_retrieve_row/Purpose:Retrieves the DataWindow/Scope:public/Arguments:none/Returns:longreturn idw_parm.Retrieve()/Function:uf_update_row/Purpose:Updates the DataWindow/Scope:public/Arguments:none/Returns:integer 1 success,-1 errorint li_rcli_rc=idw_parm.Update()if li_rc=1 thencom

28、mit;elserollback;end ifreturn li_rc结束放映第一页上一页下一页最后一页12.5 用户对象示例/Function:uf_insert_row/Purpose:在数据窗口中插入一条新记录,如果al_row=0,则在最后插入。否则在al_row的前一行插入/Scope:public/Arguments:al_row/Returns:long success return the row number of the new row that/was added,-1 errorlong ll_rcll_rc=idw_parm.InsertRow(al_row)if l

29、l_rc0 thenidw_parm.ScrollToRow(ll_rc)idw_parm.SetFocus()end ifreturn ll_rc结束放映第一页上一页下一页最后一页12.5 用户对象示例/Function:uf_delete_row/Purpose:从数据窗口中删除指定的一行数据,如果al_row=0,则当前行被删除/Scope:public/Arguments:al_row/Returns:integer 1 success-1 errorint li_rcif al_row=0 and al_row=idw_parm.RowCount()then li_rc=idw_pa

30、rm.DeleteRow(al_row)idw_parm.SetFocus()return li_rcelse return-1end if结束放映第一页上一页下一页最后一页12.5 用户对象示例下面介绍如何应用刚才我们创建的类用户对象u_business_object:(1)创建一个窗口,在窗口上放一个数据窗口控件和四个命令按钮,命令按钮上显示的文本分别是检索、更新、插入、删除。(2)在Delclare Instance Variables标签视图中声明实例变量:/用前面已经定义的类用户对象声明一个实例变量u_business_object iuo_business_object(3)在窗口

31、的Open事件中创建类用户对象。Connect;dw_1.SetTransObject(sqlca)iuo_business_object=create u_business_objectiuo_business_object.uf_init(dw_1)/调用初始化函数,传递参数dw_1(4)在Retrieve按钮的Clicked事件中编写代码:iuo_business_object.uf_retrieve_row()(5)在Update按钮的Clicked事件中编写代码:iuo_business_object.uf_update _row()结束放映第一页上一页下一页最后一页12.5 用户对象示例(6)在Insert按钮的Clicked事件中编写代码:iuo_business_object.uf_insert _row()(7)在Delete按钮的Clicked事件中编写代码:iuo_business_object.uf_delete _row()结束放映第一页上一页下一页最后一页

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(用户对象课件.pptx)为本站会员(ziliao2023)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|