|
|
Title | Display a status bar showing the steps in a long task |
Description | This example shows how to display a status bar showing the steps in a long task in Visual Basic 6. |
Keywords | StatusBar, steps, stages, progress, ProgressBar |
Categories | Controls, Software Engineering |
|
|
When the program starts, it prepares the StatusBar. It creates panels to show a message, a progress bar, and the time.
A key step here is calling subroutine MoveIntoStatusBar, which reparents the ProgressBar control into the StatusBar.
|
|
Private Sub Form_Load()
StatusBar1.Panels.Clear
With StatusBar1.Panels.Add()
.Text = ""
End With
With StatusBar1.Panels.Add()
.Width = 2 * 1440
End With
MoveIntoStatusBar StatusBar1, ProgressBar1, 2
With StatusBar1.Panels.Add()
.Style = sbrTime
.AutoSize = sbrSpring
End With
End Sub
Public Sub MoveIntoStatusBar(ByVal sbr As StatusBar, ByVal _
ctl As Control, ByVal panel_number As Long)
Dim r As RECT
' Reparent the control into the status bar.
SetParent ctl.hWnd, sbr.hWnd
' Get the status bar's panel's rectangle.
SendMessage sbr.hWnd, SB_GETRECT, panel_number - 1, r
' Position the control in the panel.
MoveWindow ctl.hWnd, r.Left, r.Top, r.Right - r.Left, _
r.Bottom - r.Top, True
End Sub
|
|
When you click the Go button, the program sets the ProgressBar's minimum and maximum values. Then for a series of steps, the program calls subroutine SetProgress to show the current state of progress, and then wastes a little time.
Subroutine SetProgress displays a text message and sets the ProgressBar's value.
|
|
Private Sub cmdGo_Click()
ProgressBar1.Min = 0
ProgressBar1.Max = 7
SetProgress "Step 1 of 4", 1
WasteTime 0.5
SetProgress "Step 1 of 4", 2
WasteTime 0.5
SetProgress "Step 2 of 4", 3
WasteTime 0.5
SetProgress "Step 3 of 4", 4
WasteTime 0.5
SetProgress "Step 4 of 4", 5
WasteTime 0.5
SetProgress "Step 4 of 4", 6
WasteTime 0.5
SetProgress "Done", 0
End Sub
Private Sub SetProgress(ByVal txt As String, ByVal _
progress_value As Integer)
StatusBar1.Panels(1).Text = txt
StatusBar1.Refresh
ProgressBar1.Value = progress_value
ProgressBar1.Refresh
End Sub
|
|
|
|
|
|