Click Here!
home account info subscribe login search My ITKnowledge FAQ/help site map contact us


 
Brief Full
 Advanced
      Search
 Search Tips
To access the contents, click the chapter and section titles.

Visual Basic 6 Black Book
(Publisher: The Coriolis Group)
Author(s): Steven Holzner
ISBN: 1576102831
Publication Date: 08/01/98

Bookmark It

Search this book:
 
Previous Table of Contents Next


You can also set a status bar panel’s image at runtime. For example, here’s how we set the image in the first panel of a status bar, using the image in a picture box when the user clicks a button (you can also use the LoadPicture function to load images in directly):

Private Sub Command1_Click()
    StatusBar1.Panels(1).Picture = Picture1.Picture
End Sub


TIP:  You can even create animation in a status bar panel; just set up a timer and place a succession of images in the panel’s Picture property.

Handling Panel Clicks

Are status bars static controls? Or can they handle events? Status bars certainly can handle events, and the most common are PanelClick and PanelDblClick. The event handler procedures for those events are passed the panel that was clicked, as in this example:

Private Sub StatusBar1_PanelClick(ByVal Panel As ComctlLib.Panel)

End Sub

You can tell which panel was clicked by checking the Panel argument’s Index or Key properties. For example, here’s how we use the Index property to report to the user which panel was clicked:

Private Sub StatusBar1_PanelClick(ByVal Panel As ComctlLib.Panel)
    MsgBox "You clicked panel " & Panel.Index
End Sub

If you’ve set the Key properties of the panels in your status bar (the Key property holds a text string), you can set up a Select Case statement to see which panel was clicked and take the appropriate action:

Private Sub StatusBar1_PanelClick(ByVal Panel As ComctlLib.Panel)
    Select Case Panel.Key
        Case "Date"
            Panel.Text = Date$
        Case "Time"
            Panel.Text = Time$
    End Select
End Sub

Adding New Panels To A Status Bar At Runtime

It’s easy to add a new status bar panel at runtime—just use the Panels collection’s Add method. Here’s an example where we add a panel to a status bar when the user clicks a command button:

Private Sub Command1_Click()
    Dim panel5 As Panel
    Set panel5 = StatusBar1.Panels.Add()
    Panel5.Text = "Status: OK"
End Sub

Creating Simple Status Bars

There’s a way of using a status bar without using panels: by making the status bar a simple status bar. How do you make a status bar into a simple status bar? You set its Style property to sbrSimple (which equals 1; the other option is sbrNormal, which equals 0). Simple status bars have only one panel, and you set the text in that panel with the SimpleText property.

Here’s an example; in this case, we just display the message “Status: OK” in the simple status bar when the user clicks a button:

Private Sub Command1_Click()
    StatusBar1.SimpleText = "Status: OK"
End Sub

The result of this code appears in Figure 15.24.


Figure 15.24  Using a simple status bar.


TIP:  One reason programmers used to use simple status bars was to show the progress of an operation by displaying a succession of dots (or other text) in the status bar’s single long panel. However, you can use the progress bar control for that these days—see the next topic in this chapter.

Adding A Progress Bar To A Form

The Testing Department is calling again. Why does downloading the 200MB data file your program requires take so long? Well, you explain, the Internet is like that. They ask, but can’t you at least show the user what progress the downloading operation is making? You take a look at the Progress Bar Control tool in the Visual Basic toolbox. Sure, you say, no problem.

You can use progress bar controls to show the progress of a time-consuming operation. These controls display a colored band that can grow (or shrink) as time goes on. To add a progress bar to a form, follow these steps:

1.  Select the Project|Components menu item.
2.  Click the Controls tab in the Components dialog box.
3.  Select the Microsoft Windows Common Controls item, and click on OK to close the Components dialog box. This adds the Progress Bar Control tool to the Visual Basic toolbox, as shown in Figure 15.3.
4.  To place a progress bar in your form, just add it as you would any control, using the Progress Bar Control tool.
5.  Set the progress bar’s Min (default is 0) and Max (default is 100) properties as desired to match the range of the operation you’re reporting on.

Now you’ve got a new progress bar in your form—but how do you use it? See the next topic.

Using A Progress Bar

Now that you’ve added a progress bar to your program and set its Min and Max properties, how do you actually use it to display data? You use a progress bar’s Value property (available only at runtime) to specify how much of the progress bar is visible. As you might expect, setting Value to Min means none of the progress bar is visible, and setting it to Max means all of it is.

Let’s see an example. In this case, we’ll let the user click a button to display a progress bar whose bar lengthens from Min to Max in 10 seconds. Add a progress bar, command button, and a timer control to a form now. Set the timer’s Interval property to 1000 (in other words, 1000 milliseconds, or 1 second). We’ll leave the progress bar’s Min property at 0 and its Max property at 100, the defaults.

When the form loads, we disable the timer and set the progress bar’s Value to 0:

Private Sub Form_Load()
    Timer1.Enabled = False
    ProgressBar1.Value = 0
End Sub

When the user clicks the command button, we want to start the progress bar, so we enable the timer. We also set the progress bar back to 0 (even though we did that when the form loads, the user might want to restart the operation, which means he might click the button several times):

Private Sub Command1_Click()
    ProgressBar1.Value = 0
    Timer1.Enabled = True
End Sub

Finally, in the Timer event handler, Timer1_Timer, we add a value of 10 to the progress bar’s Value property every second. We also check if we’ve filled the progress bar, and if so, disable the timer:

Private Sub Timer1_Timer()
    ProgressBar1.Value = ProgressBar1.Value + 10
    If ProgressBar1.Value >= 100 Then Timer1.Enabled = False
End Sub

That’s all we need—now when the user clicks the command button, we start the progress bar in motion, and it goes from 0 to 100 in 10 seconds, as shown in Figure 15.25.


Figure 15.25  Using a progress bar.


Previous Table of Contents Next


Products |  Contact Us |  About Us |  Privacy  |  Ad Info  |  Home

Use of this site is subject to certain Terms & Conditions, Copyright © 1996-2000 EarthWeb Inc.
All rights reserved. Reproduction whole or in part in any form or medium without express written permission of EarthWeb is prohibited.