当前位置: 代码迷 >> PB >> 怎么在进度条上添加一个取消按钮,实现取消功能
  详细解决方案

怎么在进度条上添加一个取消按钮,实现取消功能

热度:247   发布时间:2016-04-29 10:32:22.0
如何在进度条上添加一个取消按钮,实现取消功能?
如题,在打开这个进度条的窗口里,如何获知用户点击了取消按钮这个事件,从而停止/回退当前正在做的操作呢?
多谢


------解决方案--------------------
加个按钮cb_cancel,
设置个实例变量.BOOLEAN Ib_Stop = FALSE //中断导入文件

按钮中写:
Ib_Stop = TRUE
rollback;

在运行的按钮中写:
某个循环中
for i = 1 to ...
Yield() 
IF Ib_Stop = TRUE THEN
Ib_Stop = FALSE
cb_cancel.Enabled = FALSE
//终止并退出
return
END IF
end for


------解决方案--------------------
直接调用A的属性或方法,比如
if isvalid(A) then
A.lb_stop = true 或
A.wf_stop()
end if
探讨
可能我没说清楚,A窗口中,调用进度条的代码是这样的:
open(w_progressbar)
w_progressbar.wf_wait(0, dw_data.RowCount())//设置进度条初始值与最大值
for i = 1 to dw_data.RowCount ()
Yield()
w_progressbar.wf_pos(i)//设置进度条当前值
        //do something
        ...
next
close(w_progressbar)

进度条窗口w_progressbar上有一个取消按钮,用户点击了之后,A窗口如何得知?



------解决方案--------------------
要通用
在进度条窗口w_progressbar上定义实例变量记录window, window iw_parent
A打开用openwithparm(w_progressbar,A)

w_progressbar的open
iw_parent=Message.PowerObjectParm

停止按钮
iw_parent.dynamic wf_stop()

探讨
5楼的方法可行,
可是如此的话,这个进度条就只能由A使用了而不能复用了。
假如B窗口/C窗口也用到了这个进度条,又该如何呢?
  相关解决方案