好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

PB程序设计 第二版 第9章用户自定义事件.ppt

42页
  • 卖家[上传人]:w****i
  • 文档编号:92369733
  • 上传时间:2019-07-09
  • 文档格式:PPT
  • 文档大小:660.50KB
  • / 42 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第9章 用户自定义事件,9.1用户自定义事件在应用中的作用 9.2用户自定义事件基础知识 9.3如何使用用户自定义事件 9.4触发用户事件 9.5用户自定义事件应用实例 小结,返回总目录,,9.1用户自定义事件在应用中的作用,PowerBuilder的窗口、控件、用户对象等都有一组系统预先定义好的事件一般来说,这些系统预定义事件能够满足应用程序的大多数需求然而,有时候应用程序需要某种特殊控制;有时候应用程序需要在特定情况下执行某段代码;有时候应用程序对象间需要灵活的通讯此时,我们可以根据需要为对象定义自己的事件,这类事件就称作用户事件,,,,,,返回章目录,9.1用户自定义事件在应用中的作用,在下列情况下经常使用用户事件: (1)解决对象与窗口之间的通信问题用户事件可以通过参数进行信息传递 (2)响应特殊操作这些操作没有相应的PowerBuilder预定义事件 (3)支持用户通过多种多样的方式完成同一个功能,,,返回本节录,9.1用户自定义事件在应用中的作用,用户事件在许多地方与用户定义函数十分相似,用户事件运用的灵活程度很大程度上反映出应用程序的灵活性和适用性PowerBuilder开始将事件和函数同化,统称为方法。

      事件也可以带输入参数,并有返回值有时形式上难以区分事件和函数不过,函数一般是由用户调用,在编程时就已决定,而事件除了可以由用户触发外,还可以由系统触发大多数的事件,都是由系统触发的因此,事件比函数更为灵活,应用范围更广,,,本节完,返回本节录,9.2 用户自定义事件基础知识,9.2.1 了解用户自定义事件 9.2.2 用户事件号,,,,,,返回章目录,9.2.1 了解用户自定义事件,事件是从属于某个对象的,因此定义用户事件,首先要选好所要定义的对象,然后打开Script窗口,如图9ˉ1所示,,,返回本节录,9.2.1 了解用户自定义事件,再选择“New Event”,将出现事件定义窗口,如图9ˉ2所示,,,返回本节录,9.2.1 了解用户自定义事件,在图9ˉ2中,用户事件名和用户事件号是必须要输入的,其他则由用户决定为区别于系统预定义事件,用户事件名一般以“u”或“ue”开头 用户事件号是以pbm为前缀的事件标识,绝大多数事件都对应于特定的Windows消息其中pbm custom01到pbm custom75的事件标识不对应于任何Windows消息,它的触发由用户在编程时决定,其功能类似于函数;而其他的事件标识都有特定的含义,它们对应特定的Windows消息。

      这类事件的触发由系统决定,类似于系统预定义事件,如Clicked!、RbuttonDown!等也可以将事件号选为None,表示无事件号返回本节录,9.2.1 了解用户自定义事件,可以为用户事件定义参数及返回值:在Return Type中选择返回值类型;在Argument Type中选择参数类型;在Argument Name中输入参数名在图9ˉ2中,单击鼠标右键,将弹出一个菜单,如图9ˉ3所示,可以增加参数(Add Parameter)、插入参数(Insert Parameter)、删除参数(Delete Parameter)返回本节录,9.2.1 了解用户自定义事件,定义带参数的用户事件,其事件号必须选None,若选择其他的事件号,则定义的参数无效因为其他事件号的参数个数及类型都是由PowerBuilder确定的,用户不能修改 在定义用户事件时选择的事件标识应与所在的对象吻合,否则用户事件不起作用用户事件定义好后,可像对象的其他标准事件一样编程和使用返回本节录,9.2.2 用户事件号,PowerBuilder没有提供事件标识的说明手册,但大部分可以从标识名推断其含义本节完,返回本节录,9.3 如何使用用户自定义事件,9.3.1定义用户事件 9.3.2 删除用户事件,,,,,,返回章目录,9.3.1定义用户事件,为窗口、控件、用户对象定义用户事件的方法都是一样的,如图9ˉ4所示。

      定义了用户事件后,还需要完成下述工作才能使用用户事件:,,,返回本节录,9.3.1定义用户事件,(1)编写用户事件的事件处理程序没有事件处理程序时,即使发生了该事件,应用程序也不做任何处理 (2)必要时编写触发用户事件的代码如果用户事件对应于某个Windows消息(例如事件标识为pbm mousemove的用户事件ue mousemove对应于Windows消息wm mouseˉmove),那么当相应动作在应用程序上发生时,该事件将被自动触发如果用户事件不对应于任何Windows消息(也就是说事件标识为空或为pbm custom01到pbm custom75),那么必须使用代码触发该事件用代码触发事件时,可以使用函数TriggerEvent()或PostEvent(),,,返回本节录,9.3.1定义用户事件,在图9ˉ4中参数的含义如下: (1)New Event:系统定义事件和自定义事件 (2)Event Name:事件名,显示在脚本视图的事件列表中 (3)Event ID:事件对应的Window消息,一般均以pbm开头 (4)Pass By:参数传递方式,有三种: ● Value:值传递方式。

      将实际参数的值传递给函数 ● Reference:传递地址将实际参数的地址传递给函数,如果函数修改了形式参数值,那么实际参数值也将被修改 ● Readonly:传递地址不修改参数值 (5)Argument Name:参数名称 (6)Argument Type:参数类型 (7)Return Type:返回值类型返回本节录,9.3.2 删除用户事件,定义的用户事件号及名称不能更改,只能删除在该事件的代码编辑窗口中,单击鼠标右键,将弹出一个菜单,如图9ˉ5所示,,,,返回本节录,9.3.2 删除用户事件,选择“Delete Event”,将删除该事件要注意的是,PowerBuilder对该删除操作不作提醒,一经选择Delete Event,就立刻删除,因此若事件已有代码,则应小心只有用户事件才能删除删除用户自定义事件也可以参考图9ˉ6本节完,返回本节录,9.4 触发用户事件,定义了用户事件后,就需要设计事件处理程序,就像其他系统常用事件一样,没有事件处理程序,即使发生了该事件,应用程序也不作任何处理返回章目录,9.4 触发用户事件,触发用户事件常使用两个函数: Object Name.TriggerEvent(Event Name Object Name.PostEvent(Event Name) 其中,Object Name为对象名;Event Name为事件名,对系统事件而言,是枚举类型,如Clicked!等;对用户自定义事件而言,是一个字符串 TriggerEvent和PostEvent的区别在于:TriggerEvent立即触发该事件,而PostEvent则把事件排在事件队列的末尾。

      返回本节录,9.4 触发用户事件,在定义用户事件时,可以定义事件参数但TriggerEvent和PostEvent不能带事件参数(但可以给Message传送用户消息),因此需用下面的格式触发: Object Name.[Trigger.post][Static.Dynamic]Event Event Name([Para list]) 其中,方括号[]表示可选部分;Object Name是事件所属对象的对象名 Trigger和Post选项只能选择一个,缺省时为TriggerTrigger表示立即执行指定事件的事件处理程序,然后再执行该语句后面的代码;Post表示将该事件放置到对象的事件队列中,然后继续执行该语句后面的代码,至于发出去的事件处理程序何时执行,由操作系统决定返回本节录,9.4 触发用户事件,Static和Dynamic选项只能选择一个,缺省时为StaticStatic表示编译时指定事件必须存在,系统要进行返回值类型检查;Dynamic表示编译时指定事件可以不存在,系统把返回值类型检查推迟到应用程序运行时进行 Event是关键字,表示后面的Event Name是个事件名而不是函数。

      Para list是事件的参数,有多个参数时参数之间用逗号分隔 如果用户事件定义了参数,只能使用上述格式触发事件,而不能使用函数TriggerEvent()或PostEvent()本节完,返回本节录,9.5 用户自定义事件应用实例,实例说明 本例将演示如何设计一个日用品管理系统中的产品信息浏览修改窗口对象,不仅可以巩固学习用户自定义事件的过程,还可以体会用户自定义事件在实际应用中的作用返回章目录,9.5 用户自定义事件应用实例,设计思路 本例数据窗口采用Freeform显示风格,由于该风格较灵活,经常成为开发人员的首选风格,查询浏览信息清晰明了、方便实用返回本节录,9.5 用户自定义事件应用实例,实现过程 1.我们设计如图9ˉ7所示的界面,学习用户自定义事件的应用在窗口上添加控件: st1,st2,cb1,cb2,cb3,cb4,cb5,cb6,cb7,cb8,cb9,dw1返回本节录,9.5 用户自定义事件应用实例,2.我们根据先前创建Product表,表的结构如图9ˉ8所示创建数据窗口创建数据窗口时,选择表为Product,数据窗口的风格为自由风格返回本节录,9.5 用户自定义事件应用实例,3.代码编写 (1)我们在窗口的Open事件中编写如下代码:dw1.SetTransObject(SQLCA) (2)在cb1“显示数据”按钮的事件选择框选择“New Event”,自定义事件Event Name为ue display,如图9ˉ9所示。

      返回本节录,9.5 用户自定义事件应用实例,在cb2“下一条”按钮的事件选择框中选择NewEvent,自定义事件Event Name为ue next,如图9ˉ10所示返回本节录,9.5 用户自定义事件应用实例,同样地在cb3,cb4,cb5,cb6,cb7定义自定义事件(图略),,,返回本节录,9.5 用户自定义事件应用实例,(3)我们关联自定义用户事件与上面的几个按钮的Clicked事件 在cb1“显示数据”按钮的Clicked事件添加如下代码cb1.triggerevent(“ue disˉplay”):如图9ˉ11所示,,,返回本节录,9.5 用户自定义事件应用实例,在cb2“下一条”按钮Clicked事件添加如下代码: cb2.TriggerEvent(″ue next″) 在cb3“上一条”按钮Clicked事件添加如下代码: cb3.TriggerEvent(″ue prior″) 在cb4“第一条”按钮Clicked事件添加如下代码: cb4.TriggerEvent(″ue first″) 在cb5“最后一条”按钮Clicked事件添加如下代码: cb5.TriggerEvent(″ue end″) 在cb6“添加一条”按钮Clicked事件添加如下代码: cb6.TriggerEvent(″ue insert″) 在cb7“删除一条”按钮Clicked事件添加如下代码: cb7.TriggerEvent(″ue delete″) 在cb8“关闭窗口”按钮,Clicked事件编写代码: Close(Parent) 在cb9“保存修改”按钮,Clicked事件编写代码: dw1.Update(),,,返回本节录,9.5 用户自定义事件应用实例,为了测试,我们在表中添加几条记录如图9ˉ12所示,,,返回本节录,9.5 用户自定义事件应用实例,运行程序:单击“显示记录”按钮,结果如图9ˉ13所示,,,返回本节录,9.5 用户自定义事件应用实例,单击“下一条”按钮,结果如图9ˉ14所示。

      返回本节录,9.5 用户自定义事件应用实例,单击。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.