请教用LOTUSSCRIPT中实现拷贝时象WINDOWS那样的动画?
我参照了以下代码:
*****************************************************************************
如何在Notes窗口中显示进度条?
在Notes 的C/S 编程中,经常需要对一个集合中的对象进行遍历处理,这时如果能显示一个进度条指示当前处理进程,就比较直观形象,客户界面也比较友好。但是Notes中没有提供相关的信息。于是我们不得不调用未经公开的API函数。
以下LotusScript代码在 5.07 以后版本中测试通过,5.07以前的版本未测试。
1、首先是自定义一个类 ProgressBar 。这样以后的调用比较方便。
'声明API函数
Declare Function NEMProgressBegin Lib "nnotesws.dll"
( Byval wFlags As Integer ) As Long
Declare Sub NEMProgressEnd Lib "nnotesws.dll"
( Byval hwnd As Long )
Declare Sub NEMProgressSetBarPos Lib "nnotesws.dll"
( Byval hwnd As Long, Byval dwPos As Long)
Declare Sub NEMProgressSetBarRange Lib "nnotesws.dll"
( Byval hwnd As Long, Byval dwMax As Long )
Declare Sub NEMProgressSetText Lib "nnotesws.dll"
( Byval hwnd As Long, Byval pcszLine1 As String,
Byval pcszLine2 As String )
'定义 ProgressBar 类
Class ProgressBar
Private hwnd As Long
' 构造类
Sub New (BarRange As Long)
On Error Goto ErrorHandler
' 创建进度条
Me.hwnd = NEMProgressBegin (NPB_TWOLINE)
' 设置进度条的总长
Call NEMProgressSetBarRange (Me.hwnd, BarRange)
Exit Sub
ErrorHandler:
Dim TheError As String
TheError = "Constructor: Error " + Str(Err) + ": " + Error$
Messagebox TheError, 0 + 48, "Progress Bar Error"
End Sub
' 回收对象
Public Sub Delete
' 取消进度条
Call NEMProgressEnd (Me.hwnd)
End Sub
Public Sub UpdatePosition (BarPos As Long)
' 公共方法:更新进度位置
Call NEMProgressSetBarPos (Me.hwnd, BarPos)
End Sub
Public Sub UpdateProgressText (BarMsg As String, UpdateMsg As String)
' 公共方法:更新进度条显示文字
Call NEMProgressSetText (Me.hwnd, BarMsg, UpdateMsg)
End Sub
End Class
'类结束
2、如何调用
在任意过程或者函数中,都可以用 new ProgressBar 调用。在调用时,需要先声明一个常量 NPB_TWOLINE% ,当NPB_TWOLINE%=1 时,显示的是位于窗口中间偏上的较大的进度条,当NPB_TWOLINE%=32 时,显示的是位于屏幕下方的小进度条。
例子:
把ProgressBar 类代码写在数据库资源的 Database Script 中,并命名为 ProgressBar。
在某个过程的(Options)中:
Use "ProgressBar"
在过程代码中:
Sub Initialize
Const NPB_TWOLINE% = 1
dim pb as new ProgressBar(1000)
dim i as long
for i=1 to 1000
'....
call pb.UpdatePosition(i)
next i
End Sub
********************************************************
我现在想实现从C:\盘下拷贝一个叫AAA.RAR的文件到 D:\盘,我知道lotusscript中有一个函数
FileCopy "C:\WINDOWS\APP.BAT", "C:\APPLOAD.BAT"
但是这个函数实现时无法将目前正在拷贝的文件的字节数融和到上面这段代码中,
请大家帮帮忙,看看如何融合上面的代码,实现一个动态的文件拷贝进度条。
[解决办法]
用NotesTimer来更新进度条进度,但只能更新到90%,最后10%在FileCopy完成后更新如何?