Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0593: Progressbar in Statusbar anzeigen

 von 

Beschreibung 

Wer Office kennt, kennt auch die kleine, unscheinbare Progressbar auf der Statusleiste, die angezeigt wird, solange ein z.B. Dokument gespeichert wird. In VB gibt es die Statusbar und die Progressbar. Und - zum Glück - die SetParent Function der User32.dll. Aus diesen 3 Dingen lassen sich die Office Effekte leicht nachbauen.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

SetParent

Download:

Download des Beispielprojektes [2,64 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
' Die Komponente 'Microsoft Windows Common Controls 5.0 (SP2) (COMCTL32.OCX)' wird benötigt.

'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Schaltfläche "Command1"
' Steuerelement: Fortschrittsanzeige "ProgressBar1"
' Steuerelement: Erweiterte Statusbar "StatusBar1"
' Steuerelement: Timersteuerelement "Timer1"
' Steuerelement: Beschriftungsfeld "Label1"

'Dieser Code zeigt wie sie ganz einfach eine ProgressBar in eine StatusBar
'einsetzen können, so wie beim IE wenn er eine Seite Lädt.

'Copyright by Simon Taddiken
'Simon-Taddiken@gmx.de

Option Explicit

'API Deklaration um die ProgressBarBar in die StatusBar zu setzen
Private Declare Function SetParent Lib "user32" ( _
    ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

Private Sub Command1_Click()
    'Den Panel der ProgressBar sichtbar machen
    StatusBar1.Panels(2).Visible = True
    
    'Die ProgresBar sichtbar machen
    ProgressBar1.Visible = True
    
    'Den Timer starten
    Timer1.Enabled = True
End Sub

Private Sub Form_Load()
    StatusBar1.Panels(3).Text = "Progressbar in Statusbar Beispiel"
End Sub

'Damit unsere ProgressBar auch immer richtig positioniert wird
Private Sub Form_Resize()

    With ProgressBar1
        
        'Die Progressbar in die Statusbar setzen
        Call SetParent(.hWnd, StatusBar1.hWnd)
        .Top = 60
        .Left = StatusBar1.Panels(2).Left
        .Width = StatusBar1.Panels(2).Width
        .Height = StatusBar1.Height - 90
    End With
    
End Sub

'Um die ProgressBar zu Füllen
Private Sub Timer1_Timer()

ProgressBar1.Value = ProgressBar1.Value + 1
    
    'Wenn ProgressBar voll ist dann
    If ProgressBar1.Value >= 100 Then
        
        'den Panel der ProgressBar unsichtbar machen
        StatusBar1.Panels(2).Visible = False
        
        'die Progressbar unsichtbar machen
        ProgressBar1.Visible = False
        
        'die Progressbar auf 0 zurücksetzen
        ProgressBar1.Value = 0
        
        'den Timer ausmachen
        Timer1.Enabled = False
    End If


End Sub

'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 2 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Levis am 21.06.2005 um 16:23

Super Tipp! Danke!
Aber wieso funktioniert er (laut Angabe oben) nicht unter Win98? Was passiert da? Absturz durch Fehler?

Kommentar von Lars Blumberg am 07.07.2003 um 12:12

Dieser Code funktioniert nicht in MDI-Formularen, weil sich die ProgressBar nicht frei ausrichten lässt, obwohl sie in die StatusBar eingebunden wird.