Database 版 (精华区)

发信人: zhaowei (小燕子), 信区: Database
标  题: 11.2 可视化用户对象
发信站: 紫 丁 香 (Fri Jun 11 16:18:35 1999), 转信

义一个用户对象。首先单击POWER BAR 上面的用户对象画板按钮,屏幕上弹出用户对象
选择对话框。如图11-1。
图11-1
 
单击NEW按钮,新建一个用户对象。系统要求我们选择用户对象的类型。如图11-2。
图11-2

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

下面就用户对象画板的工作区。我们看到上面有一个图片控件。在它上面单击鼠标
右键,弹出菜单,选择SCRIPT命令,开始编写脚本。编写用户对象的脚本要处理的
一个重要问题就是解决用户对象和拥有它的窗口之间的通讯问题。一般的情况之下,
我们有两种选择:使用函数,或者使用用户事件。
所谓用户事件就是在POWER BUILDER标准事件以及WINDOWS标准事件之外,由用户自己定
义的事件。下面我们示范如何定义和使用用户事件。
选择DECLARE的USER EVENT命令,定义一个用户事件。如图11-4。
图11-4

在EVENT NAME 一栏当中可以敲入事件的名称,在EVENT ID一栏当中可以敲入事件的
ID号,不过如果您定义的用户事件与WINDOWS标准消息无关的话,可以忽略这个命
令ID号。单击OK按钮结束定义。如图11-5。
图11-5

在脚本画板的工作区当中,单击SELECT EVENT事件选择列表框,我们看到ALTERPIC 这
个用户定义的事件已经出现在列表当中了。如图11-6。


图11-6

下面的工作当中,我们将会用到一个全局变量。如何定义一个全局变量呢?选择DECLARE
菜单当中的DECLARE GLOBAL VARIABLES 命令,在POWER BUILDER弹出的全局变量定义对
话框当中输入变量的定义,单击OK按钮,就完成了定义。如图11-7。
图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
单击POWER BAR上面的RETURN按钮,关闭工作区。关闭用户对象定义工作区。单击"是"按
钮确认保存这个用户对象,为这个对象取名字。单击OK按钮。如图11-10。
图11-10

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

--
 我和一个朋友去散步,遇见一个漂亮的少妇带着一个小孩平时极腼腆的朋友一改
平日恹恹睡态,勇敢的走上前去, ∴
         《||||||||||||||||||||■※※◎    亲切的看着那小孩说:
                               ∵    ."   多可爱的孩子啊,
                                 ...''   抬头看看少妇,
                               ~"'     “还有孩子他妈!”

※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.226.249]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.559毫秒