- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在PB中方便的实现图片动态切换
在PB中方便的实现图片动态切换?(深圳:独孤求败?2003-05-30)
????PowerBuilder是一个功能十分强大的数据库开发工具,其以简便、灵活、高效等优点博得了许多编程人员的青睐,因此在国外一出现就相当的流行,近几年中国也随之而起。本人在使用PB开发“企业级数据库系统”已有近两年的经验,在开发前期由于图书资料的深度不够(好多都是就简单的介绍如何操作为止),报纸上的经验交流少得可怜,因此走了相当不少的弯路,因此想借此文章达到一个抛砖引玉的效果,使PB编程人员们在这里能够坦诚交流各自的编程经验,共同提高中国PB编程人员的水平。?
????我们都知道在PowerBuilder开发平台中不支持JPG,GIF等图片格式,仅能显示BMP,RLE,WMF三种图片格式(截止到PowerBuilder?6.5版本),所以要实现图片的动态切换,必须把“动作连续”的几个图片事先作好,然后按照顺序一个个的显示,作出的程序才会具有“电影效果”或者相当于网页上的“GIF”图片的效果(当然通过嵌入OLE对象也可实现电影的播放,在这里本人不是指使用此方法)。?
????当切换的图片比较少时,一般编程者会比较倾向于使用下面的方法,此方法结构清晰简单,比较易懂,但灵活性差:?
以四个图片的切换为例,首先建立窗口的Instance?变量(实例变量):?integer?i在一个新建窗口的open事件中写入如下脚本:?open://建立四个“图片对象”的名称分别为:p_0,p_1,p_2,p_3p_0.hide()?//开始时图片隐藏起来p_1.hide()p_2.hide()p_3.hide()i=0timer(0.2)在窗口的timer事件中写入如下脚本:?timer:if?i?=?4?then?i?=?i?–?4?//当参数i累加超过界限时拉回choose?case?mod(i,4)case?0?p_0.show()p_1.hide()p_2.hide()p_3.hide()case?1p_0.hide()p_1.show()p_2.hide()p_3.hide()case?2p_0.hide()p_1.hide()p_2.show()p_3.hide()case?3p_0.hide()p_1.hide()p_2.hide()p_3.show()end?choose?i++
????对于PowerBuilder熟练编程的人来说,可以看出以上程序脚本通用性不会很强,即当我们需要再添加几个切换的图片时,需要改动的地方太多:Case?语句的“情况个数”要随图片的增加而增加,而且每个Case?语句中又需增添诸如p_5.show(),p_5.hide()?的程序,参数i的“累加上限”需要更改,造成程序的维护量大大增加。?
????本人在PowerBuilder的使用过程中针对此情况研究了一些小的技巧,对上面的程序脚本进行的适当的完善、改进,编程人员只需遵循简单的规则而无须改动程序脚本,即可满足上面“连续图片个数增/减”的要求:遵循规则:需要显示图片对象的命名顺序与切换显示顺序要一致,必须为:p_0,p_1,p_2,p_3.....不需要切换(即静止图片)的命名中不要夹杂“数字”。?
在窗口的Instance中定义如下变量:?integer?i,p_countpicture?pic[]在窗口的open事件中写入如下脚本:open:int?icic?=?upperbound(this.control)//取出窗口中所有控件的个数p_count=0object?ctr_typefor?i?=?1?to?icctr_type?=?this.control[i].typeof()choose?case?ctr_typecase?picture!?//过滤图片控件//以下过滤图片控件中需要切换的图片并保存在一数组中if?Match(mid(this.control[i].classname(),3),[0-9])?thenp_count++?//累计需要切换图片的个数this.control[i].hide()pic[p_count]?=?this.control[i]end?if
end?choosenext
i?=?0timer(0.2)?//设定切换时间
在窗口的timer事件中写入如下脚本:timer:
if?i?=?p_count?then?i?=?i?-?p_count?//参数i超过累加界限时拉回至“零”int?j,kfor?j?=?1?to?p_count?if?pic[j].classname()?=?p_?+?string(mo
原创力文档


文档评论(0)