前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于PowerBuilder的搜索

编程中国 - 在PowerBuilder中动态调用函数 | 网站首页 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 博客 | 编程论坛 | &nbsp | 技术教程首页 | 开发语言 | WEB开发 | .NET技术 | 数据库 | 操作系统 | 网页制作 | &nbsp &nbsp 您现在的位置: 编程中国 >> 技术教程 >> 数据库 >> PowerBuilder >> PB技术资料 >> 正文 ► 在PowerBuilder中动态调用函数 在PowerBuilder中动态调用函数 作者:佚名 阅读人次:…… 文章来源:未知 发布时间:2006-1-29 网友评论()条 &nbsp   目前流行的大部分应用程序中都提供了Undo功能,在PowerBuilder中也可以利用Undo()函数实现该功能。Undo()函数可用于DataWindow, EditMask, MultiLineEdit, RichTextEdit和SingleLineEdit 对象,如果只对某一个对象进行Undo操作,只需在Undo菜单项的单击事件中键入如下脚本:Objectname.undo(),但是当窗口中有多个对象,我们在编写脚本时并不知道要对哪个对象执行undo()操作,如何解决这一问题呢?在PowerBuilder中,undo()等函数只能用于可视对象,而所有可视对象均继承自系统对象类GraphicObject。因此我们可以定义一个GraphicObject对象的实例变量go_object,等到运行时再用getfocus()函数确定具体操作对象。然后用Typeof()函数确定当前对象的类型,再用Choose case语句根据不同的类型引用不同的实例变量,代码如下: graphicobject go_objectDataWindow dw_objectEditMask em_objectMultiLineEdit mle_objectRichTextEdit rte_objectSingleLineEdit sle_object go_object=getfocus()choose case TypeOf(go_object)case DataWindow!dw_object=go_objectdw_object.undo()case EditMask!em_object=go_objectem_object.undo()case MultiLineEdit!mle_object=go_objectmle_object.undo()case RichTextEdit!rte_object=go_objectrte_object.undo()case SingleLineEdit!sle_object=go_objectsle_object.undo()case elsemessagebox("Error","Can not undo")end choose   其实我们可以用动态调用函数的方法简单地解决这一问题(只需三行代码),即对GraphicObject对象调用undo()函数,然后在函数名前加上关键字Dynamic。因为对象类GraphicObject并没有undo()这个对象函数,如果不加关键字Dynamic,编译时就会出现错误。使用了Dynamic关键字,PowerBuilder在编译时不检查该函数和所用参数的有效性,而到脚本运行时才去检查该函数。代码如下: GraphicObject go_objectgo_object=getfocus()go_object.dynamic undo()   允许动态调用函数是的PowerBuilder5.0的特性之一。在程序设计中灵活运用动态函数调用的方法有助于提高所设计程序的可维护性、可重用性。  以上程序在PowerBuileer 5.0,Window95环境下运行通过。 &nbsp 文章录入:静夜思 责任编辑:静夜思 上一篇文章: PB中关于动态工资项目问题的解决办法下一篇文章: 在PB中使用VC++编制的DLL &nbsp 相关文章 PB中编写10进制到其他进制的转换函用PowerBuilder开发多媒体播放器PowerBuilder中利用API实现动画特效用PowerBuilder6.0建立B/S结构的应在PowerBuilder中使用WINSOCK控件的用PB5设计串口通讯程序使用PB 7.0 开发Web应用在PB中使用VC++编制的DLLPB中关于动态工资项目问题的解决办PB/Sybase系统开发中的数据库转移 原创地带 24小时热门帖子 | 设为首页 | 加入收藏 | 联系我们 | 广告服务 | 管理登录 | Copyright ©2004 - 2008, BCCN.NET, Inc. All Rights Reserved