大家好,才是真的好。
随着Notes/Domino产品使用的年限越来越多,积累的数据也越来越多,用程序或代理处理这些文档和数据时,需要漫长等待,常常得不到更多的提示,很多用户会以为Notes客户机假死,于是强制关掉,造成数据处理的失败,接着又跑一遍,造成更多时间浪费。
如果有一种详细进度条提示我们,任务还在正常进行,并且速度还不赖,那么我们的内心的欣喜和体验感受会提升很多。
今天我们就介绍一下Notes应用中的进度条,主要是原生应用中的提示实现。
当然,早在近30年前,这些功能都能够实现,Notes默认就有,如果你的眼睛足够尖锐就可以发现状态栏中的进度显示:
当然我们更多人希望它在对话框中显示:
或者像这样的对话框:
如果对话框能够更加详细就好了:
还有人在功能实现的基础上,对对话框的美观程度提出了高标准、严要求,也可以进一步进行优化,
无论哪种,只要你的代码功底强大,在Notes上都充满了可能。
今天我们介绍一个简单的LotusScript进度条。
如果你的Notes运行在Windows平台上,一切就很好办了。我们可以通过C API方式调用几个函数,例如NEMProgressBegin、NEMProgressEnd等,如下图:
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 )
说明一下,nnotesws.dll是一个动态文件,里面包含很多可以公开调用的C函数。你可以在https://hclsoftware.flexnetoperations.com/flexnet/operationsportal/entitledDownloadFile.action?downloadPkgId=CAPI_Toolkit_11.0.1站点下载说明和示例nsf库,其中apiref.nsf中列举了可公开使用的C API函数。
我们声明调用的函数,如下图所示:
然后写上正式的代码,里面的注释我写得非常详细,如下:
Const NPB_TWOLINE% = 1
Dim hwnd As Long
Dim i As Long
Dim j As Long
hwnd = NEMProgressBegin( NPB_TWOLINE )
' 设置进度条数据区间
NEMProgressSetBarRange hwnd, 100
' 进度条对话框中的文本显示.
NemProgressSetText hwnd, "Calculating ...", "Start"
For i = 0 To 200
For j = 0 To 9000
'循环,延迟时间
Next j
' 更新进度条位置
NEMProgressSetBarPos hwnd, i
' 更新进度条位置到25%
If i = 50 Then
NEMProgressSetText hwnd, "Calculating ....", "25%"
End If
' 更新进度条位置到50%
If i = 100 Then
NEMProgressSetText hwnd, "Calculating .....", "50 %"
End If
' 更新进度条位置到75%
If i = 150 Then
NEMProgressSetText hwnd, "Calculating ......", "75 %"
End If
Next
' 关闭更新进度条对话框
NEMProgressEnd hwnd
也可以在里面加入自己的处理语句等。
执行时,就会出现下列图示:
这是调用Notes内置的默认进度条对话框,如果需要进一步扩展,可以采用其他方式,例如Java(LS2J)方式来生成更为详细的进度条。
不过,限于篇幅,今天我们就讲到这里吧。
更多精彩文章,请关注微信公众号:协作者