Fortschrittsbalken in Access

Der Fortschrittsbalken zeigt an, wie weit die Arbeit bereits fortgeschritten ist

Von: Lorenz Hölscher
Stand: 2. Mai 2011
Anmelden um Kommentare zu schreiben

Downloads zu diesem Beitrag

Über den Autor: Lorenz Hölscher

bild80517

Lorenz Hölscher ist freiberuflicher Dozent, Berater und Programmierer mit Schwerpunkt Anwendungs-Programmierung. Vorrangig widmet er sich Access, Word und Excel sowie begleitenden grafischen Arbeiten. Er legt viel Wert auf benutzerfreundliche Oberflächen und ordentliches Design in Optik und Programmierung. Zu Hilfe kommen ihm da seine langjährigen "branchenfremden" Erfahrungen als Architekt, Layouter und Designer.

Lorenz Hölscher bietet eigene Hilfeseiten an und hat bei Microsoft Press mehrere Bücher veröffentlicht zu Access 2007, Access 2007 VBA, Word 2007 VBA und Access 2010.

Beiträge des Autors als Atom-Feed Atom-Feed: Neues von akademie.de

Auf einem zentralen Formular

Den Fortschrittsbalken auf einem zentralen Formular anzeigen

Anstatt nun auf jedem Formular einen Fortschrittsbalken anzulegen, können Sie das auch zentral von einem speziellen Formular erledigen lassen, welches dann kurz eingeblendet wird, so wie Sie das sicherlich von verschiedenen Programmen kennen.

Das neue (und einfach kopierte) Formular frmFortschrittMeldung sieht im Entwurf praktisch ebenso aus wie im vorigen Beispiel, wobei die Schaltfläche nun überflüssig ist. Wichtig ist aber, dass die Formular-Eigenschaft PopUp auf Ja steht, damit es nicht im Vollbild erscheint, sondern klein vor anderen Formularen.

Der Code ändert sich nun so, dass kein Klick-Ereignis und keine Schleife mehr im Formular enthalten ist, sondern lediglich mit der Prozedur Balkenbreite über einen Parameter die Größe des inneren Rechtecks angegeben werden kann:

Private Sub Form_Load()
    Me.rctInnen.Width = 0
End Sub

Sub Balkenbreite(dblAnteil As Double)
    Me.rctInnen.Width = Me.rctAussen.Width * dblAnteil
    Me.rctInnen.BackColor = CLng(32000 * dblAnteil)
    With Me.lblProzent
        .Caption = Format(dblAnteil, "0.0 %")
        .ForeColor = IIf(dblAnteil > 0.5, vbWhite, vbBlack)
    End With
    Me.Repaint
End Sub

Die Prozedur darf jetzt nicht mehr als Private gekennzeichnet sein, weil sie sonst von außen nicht sichtbar wäre. Das war für das Klick-Ereignis der Schaltfläche noch sinnvoll, ist es jetzt aber nicht mehr.

Von einem normalen Modul aus wird nun beispielhaft dieses Formular von außen aufgerufen und auch von außen in einer Schleife der Fortschritt verändert.

Das zentrale Fortschrittsformular

Da der normale DoCmd.OpenForm-Aufruf wenig Kontrolle über das aufgerufene Formular ermöglicht, müssen wir uns daran erinnern, dass es sich bei Access-Formularen um Klassen-Objekte handelt. Sie können also auch "ehrlich" wie richtige Klassen instanziiert und zugewiesen werden:

Diese Seite ist für Mitglieder von akademie.de reserviert.

Möchten Sie die Mitgliedschaft 14 Tage kostenlos testen und den Beitrag komplett lesen?

Ich bin bereits Mitglied
Jetzt Probemitglied werden
Ich kann in den 14 Tagen Probezeit formlos z.B. per E-Mail stornieren. Wenn ich das nicht tue, entscheide ich mich für ein