• Browse Blogs
  • My Blog
  • My Updates

+Tags Get help with tags?

  • View as cloud  | list

+ Similar Blogs

photo

Lotus Nut

111 Entries |  Chris Whisonant
Updated 
RatingsRatings 23     CommentsComments 157
photo

Big Mutant Bl...

49 Entries |  Michael Smelser
Updated 
RatingsRatings 1     CommentsComments 49
photo

Yellow is the...

72 Entries |  Tim Tripcony
Updated 
RatingsRatings 2     CommentsComments 34
photo

Patrick Picar...

62 Entries |  Patrick Picard
Updated 
RatingsRatings 2     CommentsComments 112
photo

off the Hook ...

53 Entries |  Scott Hooks
Updated 
RatingsRatings 6     CommentsComments 81

+ Blog Authors  

1 - 1 of 1
  • Previous
  • Next
  • Page   1

ProgressBar class for Lotusscript

Karl-Henry Martinsson |   | Tags:  lotusscript code | Comments (4)  |  Visits (742)

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 End If End If End Sub Sub Close If hidden = True Then Exit Sub End If If hwnd <> 0 Then NEMProgressEnd hwnd hwnd = 0 title = "" value = 0 End If End Sub Sub SetRange(value As Long) If hidden = True Then Exit Sub End If If hwnd <> 0 Then maxvalue = value NEMProgressSetBarRange hwnd, maxvalue End If End Sub Sub SetValue(value As Long) If hidden = True Then Exit Sub End If If hwnd <> 0 Then NEMProgressSetBarPos hwnd, value End If End Sub Sub SetText(message As String) If textline2="" Then Call PrintText() End If If hidden = True Then Exit Sub End If If hwnd <> 0 Then textline1 = message NEMProgressSetText hwnd, title, textline1 & Chr$(13) & textline2 End If End Sub Sub SetText2(message As String) Call PrintText() If hidden = True Then Exit Sub End If If hwnd <> 0 Then textline2 = message NEMProgressSetText hwnd, title, textline1 & Chr$(13) & textline2 End If End Sub Function GetText() As String GetText = textline1 End Function Function GetText2() As String GetText2 = textline2 End Function Sub PrintText() Dim text As String If hidden = True Then text = textline1 If textline2<>"" Then text = text & " - " & textline2 End If Print text End If End Sub Function Show() As String hidden = False hwnd = NEMProgressBegin(NPB_TWOLINE) Call SetRange(maxvalue) NemProgressSetText hwnd, title, textline1 & Chr$(13) & textline2 End Function Function Hide() As String hidden = True If hwnd <> 0 Then NEMProgressEnd hwnd hwnd = 0 End If End Function End Class
This LotusScript was converted to HTML using the ls2html routine,
provided by Julian Robichaux at nsftools.com.


Here is some sample code:

units = GetNumberOfUnits() Set pbar = New ProgressBar(Clng(units+1),"Loading data from backend server...") Call pbar.Show() For i = 1 to units Call pbar.Increase() Call pbar.SetText("Loading coverage for unit " & i & "...") set vehicle = New CoverageData(i) ' Get vehicle coverage Call pbar.SetText2(vehicle.year & " " & Fulltrim(vehicle.name) & " - Coverage " & vehicle.cvgcode) Next Call pbar.Increase() Call pbar.SetText("Finishing processing.") Call pbar.SetText2("Please wait...") ' Do some more stuff here Call pbar.Close()
This LotusScript was converted to HTML using the ls2html routine,
provided by Julian Robichaux at nsftools.com.
No RatingsRatings 0

  • Previous
  • Next
Jump to page of 1
Skip to main content link. Accesskey S
IBM Lotus Connections Help Tools About