|
|
If you are processing a large collection of documents, it would be useful to show the user progress so they don't think your application has hung. Here is a method to show a progress meter in the status bar in Notes:
REM "From Erden Eruc @ NGSINC"
Dim i As Integer
Dim s As String
'Is this 100 meter dash? no it is a meter with 100 dashes :)
s = "--------------------------------------------"&_
"--------------------------------------------------------"
For i = 1 To 100
s = Left( Chr(1) & s, 100 )
If i<10 Then
Print "Percent Done: "& Str(i)&"% - " & s
Elseif i = 100 Then
Print "Percent Done:"& Str(i)&"% - " & s
Else
Print "Percent Done: "& Str(i)&"% - " & s
End If
Next
Print "Percent Done: 100% - Job complete..."
For a Win32-specific version that uses Notes functions (note: this is a dangerous thing to do, but if you really must have a graphical progress bar..):
Const NPB_TWOLINE% = 1
Const NPB_STATUSBAR% = 32
Declare Function NEMProgressBegin Lib "nnotesws.dll" ( Byval wFlags As Integer ) As Long Declare Sub NEMProgressDeltaPos Lib "nnotesws.dll" ( Byval hwnd As Long, Byval dwIncrement 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 )
' From Mark Dixon @ Ives
Dim hwnd As Long
Dim i As Long
Dim j As Long
'Create the progress bar
hwnd = NEMProgressBegin( NPB_TWOLINE )
'Set the bar range - the default is 100
NEMProgressSetBarRange hwnd, 200
'Display some text on the dialog. The second line is ignored if NPB_TWOLINE not specified
NemProgressSetText hwnd, "Calculating..", "Start"
For i = 0 To 200
'Simple delay loop to give us time to see whats going on
For j = 0 To 5000
Next
'Update the bar position - we could also use NEMProgressDeltaPos hwnd, 1 here
NEMProgressSetBarPos hwnd, i
'Update the text at halfway
If i = 100 Then
NEMProgressSetText hwnd, "Calculating", "Half way"
End If
Next
'Destroy the dialog when we're done
NEMProgressEnd hwnd