All entries tagged with lotusscript
Brian Moore wrote about the problem with users thinking Notes applications are slow, due to no visible feedback: "People seem to be totally happy at letting something take bleeding ages just so long as there is a little moving object to distract them from the clock."
This is very true, and I addressed this in one of my applications a while back by implementing a progress bar. Suddenly, when the users got feedback on what was happening, all complaints about it being slow stopped, despite it taking the same amount of time...
I built a progress bar class. Here it is, as well as a small code sample showing how to call it. Note that this is a Win32 only solution.
' ***** Declarations for (undocumented) progress bar in Notes *****
Private Const NPB_TWOLINE% = 1
Private Const NPB_STATUSBAR% = 32
Declare Private Function NEMProgressBegin Lib "nnotesws.dll" ( Byval wFlags As Integer ) As Long
Declare Private Sub NEMProgressDeltaPos Lib "nnotesws.dll" ( Byval hwnd As Long, Byval dwIncrement As Long )
Declare Private Sub NEMProgressEnd Lib "nnotesws.dll" ( Byval hwnd As Long )
Declare Private Sub NEMProgressSetBarPos Lib "nnotesws.dll" ( Byval hwnd As Long, Byval dwPos As Long)
Declare Private Sub NEMProgressSetBarRange Lib "nnotesws.dll" ( Byval hwnd As Long, Byval dwMax As Long )
Declare Private Sub NEMProgressSetText Lib "nnotesws.dll" ( Byval hwnd As Long, Byval pcszLine1 As String, Byval pcszLine2 As String )
Class ProgressBar
Private hidden As Integer
Private hwnd As Long
Private value As Long
Private title As String
Private textline1 As String
Private textline2 As String
Private maxvalue As Long
Public Sub New(range As Long, initialtitle As String)
Dim session As New NotesSession
maxvalue = Clng(range)
title = initialtitle
textline1 = ""
textline2 = ""
' Check if code is running on server (scheduled agent)
Íf session.IsOnServer Then
hidden=True
Else
hidden=False
End If
If hidden = True Then
Exit Sub
End If
hwnd = NEMProgressBegin(NPB_TWOLINE)
Call SetRange(maxvalue)
NemProgressSetText hwnd, title, textline1 & Chr$(13) & textline2
End Sub
Sub Increase()
If hidden = True Then
Exit Sub
End If
If hwnd <> 0 Then
If value < maxvalue Then
value = value + 1
NEMProgressSetBarPos hwnd, value
End If
End If
End Sub
Sub Decrease()
If hidden = True Then
Exit Sub
End If
If hwnd <> 0 Then
If value > 0 Then
value = value - 1
NEMProgressSetBarPos hwnd, value
|