Button Home/Top/Zurück


Progressbar (Fortschrittsanzeige)



Im MS-Office-Forum gab es vor kurzem eine Anfrage, wie man den wohl eine Fortschrittsanzeige implementieren könne.
Zu diesem Zweck gibt des ActiveX-Steuerelement Microsoft ProgressBar Control welches in der Version 5.0 in COMCTL32.OCX und in der Version 6.0 in MSCOMCTL.OCX enthalten ist.

Es sieht wie folgt aus:

Progressbar
Progressbar

Die wichtigsten Eigenschaften des Progressbar sind Min und Max, mit denen die Laufweite des Balkens eingestellt werden. Mit Laufweite ist die Anzahl der Schritte gemeint, die notwendig sind um den Balken von ganz links bis ganz rechts auszufüllen.
Eine weite nützliche Eigenschaft ist Orientation welche es ermöglicht den Progressbar horizontal oder vertikal darzustellen.

Die Eigenschaft Max signalisiert schon, daß der Einsatz des Progressbar nur dann (sinnvoll) möglich ist, wenn vor der Verarbeitung klar ist wie viele Verarbeitungsschritte vorgenommen werden müssen.
Das können nun beliebige Größen sein, z.B. die Anzahl von Datensätzen einer Tabelle, die Anzahl von Zeilen in einer Datei oder eine anderer berechneter Wert.
Auf keinen Fall sollte man versuchen zeitliche Grenzen abzubilden. Jeder kennt z.B. diese unsägliche Anzeige beim Download von Datei aus dem Internet, die einem prognostiziert der Download währe in 1 Minute 45 Sekunden abgeschlossen und nach 5 Minuten Wartezeit stehen da angeblich noch immer verbleibende 50 Sekunden an.

Wenn also die maximale Anzahl von Verarbeitungsschritten klar ist, wird dieser Wert in der Eigenschaft Max des Progressbar eingetragen. In der Eigenschaft Min steht dann (in den meisten Fällen) der Wert 0.

Der Fortschritt wird nun durch einfaches Hochzählen der Verarbeitungsschritte und Zuweisung der aktuellen Schrittnummer an den Progressbar, anzeigt.

Folgende Beispiele:
horizontaler Progressbar vertikaler Progressbar
horizontaler Progressbar vertikaler Progressbar

Kurz zur Bedienung. Im Feld Anzahl der Verarbeitungsschritte kann die maximale Anzahl der Verarbeitungsschritte angegeben werden (ist ja schließlich ein Beispiel Zwinkersmilie). Über die Checkbox Warten zw. Verarbeitungsschritten kann die Verarbeitungszeit beeinflußt werden. Hierbei wird zwischen den einzelnen Schritten die Verarbeitung für eine Sekunde angehalten. Dies dient allerdings nur zur Illustration, um das Schauspiel besser verfolgen zu können.
Über den Button Start Verarbeitung wird die Simulation der Verarbeitung für die Anzahl der Verarbeitungsschritte gestartet.

Der Code hinter dem Button sieht so aus:
Private Sub PbStartProc_Click()
 
Dim i As Long
    '
    ' Prüfen, ob die Anzahl der Verarbeitungsschritte angegeben wurde.
    '
    If IsNull(Me.dfAnzWorkSteps) Then
        MsgBox "Bitte geben Sie die Anzahl der Arbeitsschritte an", vbCritical, _
		 "Progressbar Beispiel"
        Exit Sub
    End If
    '
    ' Wenn eine Anzahl Verarbeitungsschritte angegeben wurde, dann sollte diese > 0 sein
    '
    If Me.dfAnzWorkSteps <= 0 Then
        MsgBox "Bitte geben Sie als Anzahl der Arbeitsschritte eine Wert größer 0 an.", _
		vbCritical, "Progressbar Beispiel"
        Exit Sub
    End If
    '
    ' Max. Anzahl der Schritte an den Progressbar übergeben.
    '
    Me.ProgBar.Max = Me.dfAnzWorkSteps
    '
    ' Simulieren der Verarbeitung
    '
    For i = 0 To Me.dfAnzWorkSteps
        '
        ' Aktuellen Arbeitschritt an Progressbar übergeben.
        '
        Me.ProgBar.Value = i
        '
        ' Den aktuellen Arbeitsschritt in Textfeld ausgeben.
        '
        Me.dfAktSchritt = i
        '
        ' Prozentualen Fortschritt berechnen und ausgeben.
        '
        Me.dfFortschritt = Trim(Str((i * 100) \ Me.dfAnzWorkSteps)) & "%"
        '
        ' Prüfen, ob zwischen den simulieren Arbeitsschritten gewartet
        ' werden soll...
        '
        If Me.CbWarten Then
            '
            ' wenn ja, dann 1 Sekunde warten
            '
            Warten 1
        Else
            '
            ' wenn nein, dann die Verarbeitung freigeben, damit die
            ' Anzeigen aktualisiert werden können.
            '
            DoEvents
        End If
 
    Next i
 
End Sub


Hierbei sind:
  • Me.dfAnzWorkSteps das Feld für die Eingabe der max. Anzahl Verarbeitungsschritte.
  • Me.ProgBar der Progressbar
  • Me.dfAktSchritt das Feld für die Anzeige des aktuellen Verarbeitungsschrittes.
  • Me.dfFortschritt das Feld für die Anzeige des prozentualen Verarbeitungsfortschrittes.
  • Me.cbWarten die Checkbox um das Warten zwischen den Verarbeitungsschritten an-/abzuschalten.

Hinweis:
Sobald für die Anzeige des Verarbeitungsfortschrittes mehr als nur der Progressbar verwendet wird (im Beispiel die Felder zur Anzeige des aktuellen Arbeitsschrittes und die prozentuale Fortschrittsanzeige) muß zwischen den Verarbeitungsschritten das Kommando DoEvents angegeben werden, um so die Aktualisierung der Textfelder sichtbar zu machen.


Access Icon Beispiel als MDB (108 KB) zum downloaden.

Button Home/Top/Zurück