转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件使用 >> 常用软件 >> 正文
PowerBuilder中用对象实同进度         

PowerBuilder中用对象实同进度

作者:闵涛 文章来源:闵涛的学习笔记 点击数:874 更新时间:2009/4/24 21:43:01
17a2 p>在程序中有时为表示数据的复制,读取等时间软长时,应采用进度条来表示执行的状况,以免使用户才生程序死机以及运行速度慢的感觉,给用户一个比较好的用户界面。但在PowerBuilder6.0中并没有可以直接使用的进度条控件,在本例中我们通过定制可视用户对象的创建以及用户对象与窗口的通讯方法来实现进度条。
实现步骤如下:

1. 创建一个名为Customuo的用户对象,并将它保存在名为Customuo.pbl的应用库中;

2. 单击画笔栏的用户对象画笔图标,系统显示“Select User Object”对话框,单击“New”按钮,系统显示“New User Object ”对话框;

3. 通过单击选择“Visual”组框中的“Custom”选项,然后单击“OK”按钮进入用户对象画笔;

4. 在用户对象上放置三个静态文本框,将其依次命名为st_background、st_foreground、st_percent,分别用于显示进度条的背景、进度条当前进展以及进展的百分比表示。把它们的标题(对应于Text属性)全部删掉,保留为空白。用户对象本身的大小通过放置在窗口上的用户对象控件来控制;

5. 右击用户对象的空白部分(而不是其上的三个静态文本控件),从弹出菜单中选择“Script....."菜单项,进入代码编辑器;用户对象的。在事件列表框中选择Constructor事件,我们将对该事件编程,实现静态文本控件位置、大小的调整、边框设置等功能。具体代码如下:

//设置静态文本控件的高度、宽度

st_foreground.height=st_background.height

st_foreground.width=0

//设置静态文本控件位置

st_background.x=0st_background.y=0
st_foreground.x=0st_foreground.y=0

//设置边框风格

st_background.BorderStyle=StyleLowered!

st_foreground.BorderStyle=StyleLowered!

//改变用户对象的高度

This.height=st_foreground.height+st_percent.height+50

//修改进程条宽度

st_background.width=This.width

//设置显示百分比的静态文本控件位置

st_percent.y=100

st_percent.x=this.width/2 - st_percent.width/2

6. 从“Declare”菜单选择“Instance Variable....."菜单项,在打开的对话框中定义一个实例变量,它们的访问权限为Protected(Protect型变量的特性为:用户对象外的其它对象不能直接访问这些变量,只能通过对象函 捶梦剩庵址椒芄槐;ざ韵笾械闹匾荩饫锒ㄒ宓谋淞縤l_limit用于保存进度条对应的数值上界:
Protected:

Long il_limit

7. 从“Declare”菜单选择“User Object Functions...”菜单项,我们定义名为SetProgress()的对象函数。该函数的功能是设置作为进度提示的静态文本控件st_foreground的宽度和静态文本控件st_percent上显示的百分比。这样通过不断调用该函数,可达到动态显示进程的效果。该函数有一个参数ai_value,数据类型为Integer,引用类型为Value。函数的返回值类型为(None)(无返回值)。函数代码为:

Integer li_percent

//设置st_foreground静态文本控件的的宽度,以指示当前完成进度st_foreground.width=st_background.width/il_limit *ai_value

li_percent=st_foreground.width/st_background.width*100

st_percent.text=String(li_percent)+"%"

Return

8. 按前面相同的方法,再定义一个对象函数SetColor(),这样其它对象就可以设置进度指针的颜色了。SetColor()函数有一个参数,数据类型为Long,引用类型为Value。函数的返回值类型为(None)(无返回值)。函数代码为:

//设置进度条颜色

st_foreground.BackColor=al_color

Return

9. 现在定义个设置进度条上界il_limit的函数SetLimit(),进度条将根据il_limit的值计算百分比。SetLimit()函数有一个参数,数据类型为Integer,引用类型为Value。函数的返回值类型为(None)(无返回值)。函数代码为:

//设置进度条的上界

il_limit=al_value

10. 单击用户画笔工具栏“Close”图标,系统显示保存对话框后将用户对象保存为cuo_progress;

11. 使用窗口画笔创建一个新窗口;将窗口标题设置为“用户对象演示”,将窗口类型选择为“Response”;然后从“Controls”菜单中选择“UserObject...."菜单项,系统打开"select User Object”对话框,选择cuo_progress,然后单击“OK”按钮关闭对话框;在窗口上单击,包含cuo_progress的用户对象控件被放置到窗口上;

12. 双击用户对象控件,打开该控件的属性对话框,在“Name”编辑框中键入该控件的名称“uo_progress”,并从“Border”下拉列表框中选择该控件的边框为“None”,然后单击“OK”按钮关闭对话框;

13. 在窗口上放置两个命令按钮,将其标题分别设置为“开 始”和“停止”。“开 始”按钮模拟执行过程,启动并推进进度条,“停 止”按钮随时终止模拟执行。
14. 从“Declare”菜单选择“Instance Variable.....”菜单项,说明三个实例变量,其中,ii_x和ii_y为Integer型,stop为boolean型

:Protected:

boolean stop

integer ii_x,ii_y

stop实例变量的作用是作为一个标志,当用户单击“停 止”按钮时,stop变量通知模拟执行过程用户希望终止执行;

15. 对“开 始”按钮的Clicked事件编写下述代码:

//初始时进度条处于非停止状态

stop=FALSE
//设置进度条颜色

uo_progress.SetColor(RGB(255,0,0))

//设置进度条上界为100

uo_progress.SetLimit(100)

//用循环模拟一个执行过程

for ii_x=1 to 100for ii_y= 1 to 1000

//使其它控件有机会得到控制权

yield()

if stop then goto jumploopnext

uo_progress.SetProgress(ii_x)

next

jumploop:

代码中,RGB()函0数构造颜色值,Goto语句跳出循环。yield()函数出让系统控制权,这样系统才会在执行过程中响应用户单击“停 止”按钮操作,删除该语句。

16. 对“停 止”按钮的Clicked事件编写下述代码: stop=TRUE

17. 将窗口保存为w_progress; 在用户对象的Open事件中编写下述代码打开窗口:

//打开窗口

Open(W_progress)

18. 关闭代码编辑器,单击画笔栏的“Run”图标,应用程序开始运行。单击“开 始”按钮,一个红色的进度条自左向右延伸。延伸过程中单击“停 止”按钮随时停止进一步的模拟处

本例使用的关键是yield()函数使用以及讲解用户对象与窗口通信的是怎样实现

155


[办公软件]在sybase中插入图片、PDF、文本文件  [办公软件]安装Sybase ASE
[办公软件]linux指令大全(完整篇)  [办公软件]Linux新手入门常用命令大全
[办公软件]在RedHat Linux 9里安装gaim0.80  [办公软件]浅谈Linux 下Java 1.5 汉字方块问题解决方法
[办公软件]Linux程序员必读:中文化与GB18030标准  [办公软件]linux指令大全
[办公软件]制作Linux启动盘的四种方法  [办公软件]Linux文件系统的反删除方法
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · 办公软件  · 系统软件
    · 常用软件  · 聊天工具
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台