共享1:如何在Notes窗口中显示进度条?

yalvin 2003-05-30 04:17:18
共享1:如何在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(10000)
dim i as long
for i=1 to 10000
'....
call pb.UpdatePosition(i)
next i
End Sub


3、实际上,Notes中有许多有用的API函数,有兴趣的可以用某些对象浏览器分析一下Notes 中的.dll 类库。
...全文
59 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianzl 2003-05-30
  • 打赏
  • 举报
回复
收藏!
warwar 2003-05-30
  • 打赏
  • 举报
回复
好,谢谢

535

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 Exchange Server
社区管理员
  • 消息协作社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧