在VB和Delphi等语言中都提供了“进度条”控件,PB中没有现成的控件提供,但我们可以做一个“进度条”的用户定义对象

preview
需积分: 0 3 下载量 80 浏览量 更新于2010-02-26 1 收藏 22KB DOC 举报
在VB和Delphi等语言中都提供了“进度条”控件,PB中没有现成的控件提供,但我们可以做一个“进度条”的用户定义对象(user object),象控件一样在程序中调用。具体方法如下:新建一个用户对象UO_PROGRESSBAR,加上两个长方形(rectangle)控件r_1和r_2,同时加上两条线(line)控件ln_1和ln_2。线用于增加r_1的立体效果,r_2颜色为兰色,用于显示进度 在VB和Delphi等编程语言中,开发人员可以轻松地使用内置的“进度条”控件来展示应用程序执行过程中的进度。然而,在PowerBuilder (PB) 中,原生的控件集并不包含这样的功能。不过,这并不意味着我们无法在PB中实现进度条。实际上,我们可以创建一个用户定义的对象(User Object,UO),模拟出类似的功能。 这里介绍一种方法,通过创建一个名为UO_PROGRESSBAR的用户对象来实现自定义的进度条。我们需要在PB环境中新建一个用户对象,并添加两个长方形(Rectangle)控件,分别命名为r_1和r_2,以及两条线(Line)控件,命名为ln_1和ln_2。ln_1和ln_2的作用是增强r_1的立体感,而r_2则用于显示实际的进度,设置其填充颜色为蓝色。 r_1的属性设置如下: - X坐标: 5 - Y坐标: 4 - 宽度: 1408 - 高度: 64 - 是否可见: true - 线颜色: 33554431(对应于深蓝色) - 填充颜色: 33554431(对应于深蓝色) - 填充样式: solid - 线样式: continuous - 线粗细: 12 r_2的属性设置如下: - X坐标: 5 - Y坐标: 4 - 宽度: 41 - 高度: 60 - 是否可见: true - 线颜色: 16777215(对应于白色) - 填充颜色: 16711680(对应于浅蓝色) - 填充样式: vertical - 线样式: continuous - 线粗细: 12 为了实现进度条的功能,我们还需要定义窗口的实例变量(Instance Variables),包括thick(进度条与外框的距离)、b(当前进度的边界值)、以及max、min和pos(分别表示最大值、最小值和当前位置)和color(进度条颜色)。 窗口的Constructor Script中,我们需要计算并设置控件的位置和大小,以适应窗口的宽度和高度。同时,设置ln_1和ln_2的位置以形成进度条的边框。 接下来,编写Progress的Script,这里主要处理进度更新的逻辑。首先计算每段进度所占的比例,然后根据当前位置更新r_2的宽度。当位置达到最大值时,恢复初始状态;若位置在最小值和最大值之间,则根据比例调整r_2的宽度。 在实际的代码中,我们可以通过创建UO_PROGRESSBAR的实例,并设置min、max和pos的值,然后调用其Progress事件来更新进度条的显示。例如: ```pb int i uo_1.min = 0 uo_1.max = 10000 for i = 1 to 10000 uo_1.pos = i uo_1.TriggerEvent("Progress") next ``` 这段代码将创建一个从0到10000的进度条,并每次增加1,调用Progress事件更新进度条的显示。 虽然PowerBuilder没有内置的进度条控件,但我们可以通过创建用户对象并结合基本图形控件,自定义实现进度条的功能。这种方法让开发者能够在PB项目中方便地展示任务的执行进度,提升用户体验。