以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  动态label怎样实现?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=52598)

--  作者:hdffzxf
--  发布时间:2014/6/18 19:52:00
--  动态label怎样实现?

如下以代码:

 

forms("进度条窗口").Show
If forms("进度条窗口").Opened Then
    Dim p As WinForm.ProgressBar=Forms("进度条窗口"). Controls("ProgressBar1")
    Dim l As WinForm.Label =Forms("进度条窗口"). Controls("Label1")
    Dim word As String=l.text
    Dim t As Table=Tables("表目录")
    \'\'\'
    p.Minimum = 0 \'设置最小值
    p.Maximum = t.Rows.count \'设置最大值
   
    For Each r As Row In t
        r("顺序号")=r.Index+1
        \'    t.Position=r.Index
        r.DataRow.Save
        p.Value = r.Index  \'设置当前值
        l.Text=word & str(r.Index+1/p.Maximum*100) & "%"
    Next
    Forms("进度条窗口").Close
End If

Functions.Execute("刷新导航页签")

 

1、如红字部分,想实现动态的百分比变化,但是实际效果是压根显示不出来,进度条的进程比较正常!怎么解决呀?

2、另外展示进度条的窗口如果用成模式窗口就不动了,若是用成独立窗口,又担心任务进展未完成时用户进行别的操作,该如何解决呀?

 

 


--  作者:有点甜
--  发布时间:2014/6/18 19:58:00
--  

 第一个问题:

 

试试这样

 

l.Text= word & str((r.Index+1)/p.Maximum*100) & "%"

Application.DoEvents()

 

 第二个问题:不能用模式窗口,你可以这样

 

forms("进度条窗口").Show

forms("进度条窗口").ToMost

LockBaseMainForm

 

\'执行代码

 

UnLockBaseMainForm


--  作者:hdffzxf
--  发布时间:2014/6/19 16:11:00
--  
forms("进度条窗口").ToMost  这句是什么意思呢?而且报错,提示tomost不是winform的成员呀!
--  作者:Bin
--  发布时间:2014/6/19 16:14:00
--  
TOPMOST
--  作者:hdffzxf
--  发布时间:2014/6/19 17:04:00
--  

LockBaseMainForm是锁定主窗口,我的窗口不是主窗口,而是模式窗口,比如是:forms("设置窗口"),窗口有保存按钮,点保存按钮时调用forms("进度条窗口"),显示进度情况,但我想在进度条窗口显示过程中,用户不可以操作forms("设置窗口"),如何实现?

 

试验了StopRedraw和ResumeRedraw,但是效果不理想,比如竟然仍可以在进度条窗口显示过程中,拖动forms("设置窗口")并可以选定窗口中的表,不知怎么杜绝!


--  作者:hdffzxf
--  发布时间:2014/6/19 17:07:00
--  
或者是转换思路,将进度条窗口设为模式窗口?然后将代码写入进度条窗口的afterload事件里?
--  作者:有点甜
--  发布时间:2014/6/19 17:10:00
--  
以下是引用hdffzxf在2014-6-19 17:07:00的发言:
或者是转换思路,将进度条窗口设为模式窗口?然后将代码写入进度条窗口的afterload事件里?

 

嗯嗯,把代码放到afterload事件。


--  作者:hdffzxf
--  发布时间:2014/6/23 12:05:00
--  

接上面的思路,如果将进度条窗口设为模式窗口,将进度代码放入afterload事件的话,那针对不同的表,我就得设计N多个进度条窗口,这明显浪费资源,不是个好的解决方案。我想就设计一个进度条窗口,不同的窗体中的表都可以调用它。


--  作者:hdffzxf
--  发布时间:2014/6/23 12:07:00
--  
或者我就得声明全局变量了,让label1和ProgressBar1的值对应等用全局变量,这倒也可以,但我尽量不想用全局变量
--  作者:有点甜
--  发布时间:2014/6/23 14:17:00
--  
以下是引用hdffzxf在2014-6-23 12:07:00的发言:
或者我就得声明全局变量了,让label1和ProgressBar1的值对应等用全局变量,这倒也可以,但我尽量不想用全局变量

 

那就没办法了,模式窗口就是要特殊处理的。