文本版|topic 高级搜索
   名人堂 帮助 论坛制度 意见反馈 | 首页 博客 周新贴 专题 求职 读书
RSS 底部
 
社区导航: 专家门诊   网络技术   操作系统   数据库   程序设计   系统应用   考试认证   CIO及信息化   站长交流   综合交流   下载基地  51CTO产品服务 设为首页 | 收藏本站
51CTO技术论坛» PowerBuilder » PowerBuilder可视化用户对象       [ 打印]  [ 订阅]  [ 收藏]  [ 推荐给朋友]   [ 本帖文本页]

论坛跳转:
     
标题: [转载] PowerBuilder可视化用户对象  ( 查看:282  回复:2 )   
 
ribut9225
主版主  点击可查看详细


开坛元老   内阁大臣   诚信兄弟   主版主专用   巨蟹座  
帖子 3069
精华 1
无忧币 5692
积分 4079
阅读权限 150
来自 (保密)
注册日期 2006-6-22
最后登录 2008-9-8 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2008-6-26 09:28   标题:PowerBuilder可视化用户对象
上一帖 |
第十一章 用户对象
11.1 简介
对象是面向对象程序设计的核心概念。一个对象可以拥有若干属性,以及一系列的对这些属性进行操作的方法。一个对象可以通过若干个接口同其它的对象进行相互的作用,共同完成一项工作。当对象被定义好之后,它就拥有了活力,就能够完成一定的功能。我们给出一个对象的定义之后,就可以根据需要多次使用,而不需要做任何额外的工作,这就大大提高了脚本的重用性和易维护性。POWER BUILDER 提供了用户对象这个特性,很好的支持了对象化程序设计。下面我们就具体介绍如何在POWER BUILDER中定义和使用用户对象。
POWER BUILDER 中有两种用户对象,一种是可视的用户对象,一种是类用户对象。下面我们先介绍可视用户对象。
11.2 可视化用户对象

所谓可视用户对象就是可重用的具有某种行为的一个或一组控件。下面举一个例子,定义一个用户对象。首先单击POWER BAR 上面的用户对象画板按钮,屏幕上弹出用户对象选择对话框。如图11-1。

图11-1


图11-2
单击NEW按钮,新建一个用户对象。系统要求我们选择用户对象的类型。如图11-2。
下面的VISUAL组框表示建立可视类型的用户对象,CUSTOM图标表示定制类型,定制的可视化用户对象是具有多个控件的对象,它们作为一个整体来发挥作用。
STANDARD图标表示标准类型的可视化用户对象,它是通过继承一个标准类型的POWER BUILDER控件来定义的。我们可以通过修改其定义使之适应程序设计的要求。
EXTERNAL图标表示外部可视用户对象,它的定义来自基于WINDOWS操作系统的POWER BUILDER 系统之外的对象,比方说,如果您准备了一个WINDOWS动态链接库,那么就可以使用它在POWER BUILDER 中建立一个外部的可视化用户对象。
上面的CLASS组框表示要建立类用户对象,其中也包括定制和标准两种,它们的含义与刚才介绍的可视化用户对象的对应部分大致相同,在后面的内容当中,我们将加以详细地介绍。

图11-3
单击VISUAL 组框中的STANDARD按钮,建立一个标准类型的用户对象。接下来选择继承哪一种标准控件。这个列表框当中列出了POWER BUILDER 中支持的所有标准控件,选择PICTURE图片控件加以继承。然后单击OK按钮。如图11-3。
下面就用户对象画板的工作区。我们看到上面有一个图片控件。在它上面单击鼠标右键,弹出菜单,选择SCRIPT命令,开始编写脚本。编写用户对象的脚本要处理的一个重要问题就是解决用户对象和拥有它的窗口之间的通讯问题。一般的情况之下,我们有两种选择:使用函数,或者使用用户事件。
所谓用户事件就是在POWER BUILDER标准事件以及WINDOWS标准事件之外,由用户自己定义的事件。下面我们示范如何定义和使用用户事件。

图11-4
选择DECLARE的USER EVENT命令,定义一个用户事件。如图11-4。

图11-5
在EVENT NAME 一栏当中可以敲入事件的名称,在EVENT ID一栏当中可以敲入事件的ID号,不过如果您定义的用户事件与WINDOWS标准消息无关的话,可以忽略这个命令ID号。单击OK按钮结束定义。如图11-5。
在脚本画板的工作区当中,单击SELECT EVENT事件选择列表框,我们看到ALTERPIC 这个用户定义的事件已经出现在列表当中了。如图11-6。

图11-6

图11-7
下面的工作当中,我们将会用到一个全局变量。如何定义一个全局变量呢?选择DECLARE菜单当中的DECLARE GLOBAL VARIABLES 命令,在POWER BUILDER弹出的全局变量定义对话框当中输入变量的定义,单击OK按钮,就完成了定义。如图11-7。
在这个事件的脚本当中我们还将使用一个结构。什么是结构呢?结构就是相关变量的集合,结构的相关变量被称为结构属性。结构可以分为全局级和对象级两种,这里我们定义一个对象级的结构,用来保存几个字符串。
定义结构的方法非常的简单。选择DECLARE中的USER OBJECT STRUCTURES命令,系统弹出结构选择对话框,单击NEW按钮,新建一个结构。在VARIABLE NAME 一栏当中输入变量的名字,选择变量的类型。输入需要的变量之后,关闭结构定义画板。如图11-8。

图11-8

图11-9
>系统将会提示我们保存这个结构,选择“是”按钮,给结构取一个名字,定义结构的工作就完成了。如图11-9。

如何在程序中使用这个结构呢?一个结构就是一个新的数据类型,在使用之前必须实例化。这句脚本的意思就是生成一个结构的实例。
strucPictureName name
我们可以使用点操作符给结构的变量赋值。
name.pic1 = "1.bmp"
name.pic2 = "2.bmp"
name.pic3 = "3.bmp"
name.pic4 = "4.bmp"
name.pic5 = "5.bmp"
name.pic6 = "6.bmp"
name.pic7 = "7.bmp"
这段脚本的意思是根据全局变量的值从结构变量当中取出合适的值来改变图片控件的属性。
CHOOSE CASE picnum
case 1
this.picturename = "1.bmp"
case 2
this.picturename = "2.bmp"
case 3
this.picturename = "3.bmp"
case 4
this.picturename = "4.bmp"
case 5
this.picturename = "5.bmp"
case 6
this.picturename = "6.bmp"
case 7
this.picturename = "7.bmp"
END CHOOSE

图11-10
单击POWER BAR上面的RETURN按钮,关闭工作区。关闭用户对象定义工作区。单击“是”按钮确认保存这个用户对象,为这个对象取名字。单击OK按钮。如图11-10。

图11-11
接下来,打开一个窗口,单击控件布置按钮,弹出控件列表,单击USER OBJECT按钮,系统弹出用户对象选择对话框,在列表中选择刚才定义的控件,选择然后在窗口上单击鼠标左键,布置这个控件。如图11-11。
在窗口上面单击鼠标右键,弹出菜单,选择SCRIPT命令。在事件选择列表当中选择OPEN事件,在其中加入一段代码。
Timer(0.5)
它的意思是在窗口打开的时候,设置该窗口的定时器触发时间间隔为半秒钟。设置然后选择窗口的TIMER定时器触发事件。加入这样的代码。
p_1.TriggerEvent("alterpic")
它的意思是当定时器计时已满事件触发的时候,程序触发我们刚才定义的用户事件。
这样就完成了窗口和用户对象的接口定义。关闭脚本画板工作区。关闭窗口画板工作区。
从上面的例子当中,可以看出使用用户对象的便利之处。



用户必读,51CTO积分系统调整通知
2008-6-26 09:281楼
[ 顶部 ]
 
美满
新新人类  点击可查看详细



帖子 4
精华 0
无忧币 10
积分 4
阅读权限 20
注册日期 2008-6-27
最后登录 2008-8-8 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-6-27 23:33 
:handshake



网络虽虚拟,技术无边界,来看看大家“真面目”!
2008-6-27 23:332楼
[ 顶部 ]
 
yoyot
新新人类  点击可查看详细



帖子 3
精华 0
无忧币 8
积分 3
阅读权限 20
注册日期 2008-7-16
最后登录 2008-7-16 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-7-16 21:02 
这个不错,PB书中介绍这些知识的比较少



网络虽虚拟,技术无边界,来看看大家“真面目”!
2008-7-16 21:023楼
[ 顶部 ]
     
论坛跳转:  

| | |

| | |

| | |

标记已读 · 删除论坛Cookies · 文本版 · WAP
 
| 诚征版主 | 版主堂 | 意见建议 | 大史记 | 论坛地图
Copyright©2005-2008 51CTO.COM  Powered by Discuz!
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系。
京ICP备05051492号