当前位置: 代码迷 >> PB >> PB 进度条解决办法
  详细解决方案

PB 进度条解决办法

热度:317   发布时间:2016-04-29 05:19:57.0
PB 进度条
PB9  自带进度条控件 
我retrieve时 大概40-50秒、 希望在retrieve开始前调用进度条 结束后隐藏或关闭 进度条
retrieve没结束前达到最大值时 清零  重新滚动

A窗口 输入查询条件 点查询clicked  打开B窗口w_ddys, B窗口打开时retrieve  

timer(0.5)
OpenWithParm(w_ddys,ls)

timer事件:  pos实例变量
pos = pos + 5
hpb_1.position = pos

if IsValid(w_ddys) then   //这个好像不能判断retrieve  用SQLcode=0也没弄明白
   //已经打开
timer(0)
close(w_sel)
else
  //没有打开
  pos = 0
end if 

w_ddys open

dw_1.settransobject( sqlca)
dw_1.retrieve(d1,d2,p3,p4)

现在代码的问题是w_ddys的数据窗口 retrieve 时 timer 事件就不响应了、得用多线程么?
请大侠指教、
给一个播放动画进度的列子也可以、本人菜鸟。
------解决思路----------------------
假设 A窗口上面有个 dw_1 ,你是想dw_1刷新的时候,也就是retrieve()的过程中弹出进度条。是这样吧
假设 B窗口是进度条窗口,含有进度条控件 hpb_1

1.在A窗口的DW_1的 retrievestart事件下加入如下代码:

if isvalid(B窗口) = true then
  close(B窗口)
end if
open(B窗口)

2.在A窗口的DW_1的 retrieveend事件下加入如下代码:

if isvalid(B窗口) = true then
  close(B窗口)
end if

3.在B窗口的open事件下加入如下代码:

hpb_1.maxposition = 100
hpb_1.position = 0
hpb_1.setstep = 1
timer(1)

4.在B窗口的timer事件下加入如下代码:

if hpb_1.position >= 100 then
  hpb_1.position = 1
else
  hpb_1.position = hpb_1.position + 1
end if

------解决思路----------------------

先得到总行数,再用数据窗口的 retrievestar retrieverow retrieveend 事件 控制
------解决思路----------------------
周末再讨论,上班忙。。。
  相关解决方案