Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 4/2002.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Die Fortschrittsanzeige - geduldigeres Warten

Autor: Christoph Spielmann, Düsseldorf

Gut Ding will Weile haben, denkt sich mancher Programmierer, wenn er bei der Programmierung eines Importvorgangs schon vermutet, dass der spätere Benutzer seines Werks wohl die eine oder andere Tasse Kaffee trinken wird, bis die Daten korrekt in den Tabellen untergebracht sind. Bei länger andauernden Vorgängen ist es sinnvoll, dem Benutzer ehrlich mitzuteilen, dass der Vorgang noch länger dauert. Er wird darauf aufmerksam gemacht, dass etwas passiert, und wartet geduldiger auf den Abschluss der Arbeit.

Stillstand ist Rückschritt

Die denkbar schlechteste Lösung bei der Abarbeitung länger dauernder Vorgänge ist es, dem Benutzer keine Information über den aktuellen Stand zu geben. Generell sollten alle Vorgänge, die länger als drei Sekunden dauern, entsprechend dokumentiert werden.

Bei sehr langen Vorgängen, die beispielsweise mehrere Minuten dauern, sollte dem Benutzer außerdem die geschätzte Restzeit bis zum Ende angezeigt werden. So kann der Benutzer den Vorgang besser einschätzen und ggf. seine Arbeit darauf einstellen.

Die hier vorgestellte Lösung gibt Ihnen die Möglichkeit, sowohl den prozentualen Fortschritt als auch die noch benötigte Restdauer anzeigen zu lassen. Darüber hinaus können Sie den Vorgang abbrechen oder anhalten.

Abb. 1: Die fertige Fortschrittsanzeige

Letzteres ist insbesondere bei sehr langen Importvorgängen sinnvoll, die mehrere Tage dauern und vorzugsweise über Nacht ausgeführt werden sollen.

Tagsüber können Sie den Vorgang anhalten, damit Sie problemlos andere Aufgaben mit Ihrem PC erledigen können. Abb. 1 zeigt Ihnen den Aufbau der fertigen Fortschrittsanzeige.

Erstellen der Fortschrittsanzeige

Damit Sie die Fortschrittsanzeige problemlos in Ihre Datenbanken übernehmen können, ist der Aufbau allgemein gehalten. Aus dem gleichen Grund befindet sich der komplette VBA-Programmcode in dem Formularmodul der Fortschrittanzeige, sodass Sie lediglich ein einzelnes Formular in Ihre Datenbank kopieren müssen.

Zum Erstellen der Fortschrittsanzeige gehen Sie wie folgt vor:

  • Legen Sie ein neues, ungebundenes Formular an.
  • Blenden Sie die Navigationsschaltfläche, die Bildlaufleisten, die Min- und Max-Schaltflächen sowie die Schließen-Schaltfläche aus. Die entsprechenden Eigenschaften finden Sie im Eigenschaftenfenster des Formulars.
  • Stellen Sie die Eigenschaften Automatisch zentrieren, PopUp und Gebunden auf den Wert Ja und die Eigenschaft Rahmenart auf den Wert Dialog ein.
  • Innerhalb des Formulars platzieren Sie anschließend ein Rechteck. Verwenden Sie dazu das Rechteck-Werkzeug der Toolbox. Geben Sie dem neuen Steuerelement den Namen recFrame. Anschließend geben Sie dem Rahmen eine weiße Hintergrundfarbe sowie einen vertieften Spezialeffekt. Letzteres stellen Sie mit der gleichnamigen Eigenschaft des Rechtecks ein.

    Abb. 2: Die Anordnung der Rechtecke zur Darstellung des prozentualen Fortschritts

    Innerhalb dieses Frames erstellen Sie ein weiteres Rechteck namens recProgressBar. Färben Sie dieses Rechteck blau ein und passen Sie es pixelgenau in den Frame ein. Die Breite sollte hierbei über den kompletten Frame gehen, was der späteren Darstellung von 100% entspricht. Abb. 2 zeigt Ihnen den Aufbau des Balkens in der Entwurfsansicht.

    Praxis-Tipp

    Bei der Positionierung helfen Ihnen die Pfeiltasten der Tastatur. Bei gedrückt gehaltener Strg-Taste können Sie das markierte Steuerelement pixelweise verschieben. Die Größe ändern Sie, indem Sie zusätzlich die Umschalttaste drücken. (

    Anschließend platzieren Sie mittig auf dem Balken ein Bezeichnungsfeld mit transparentem Hintergrund. Geben Sie dem Steuerelement den Namen lblPercent und richten Sie den Inhalt zentriert aus. Als Text geben Sie lediglich einen Punkt ein. Dieser wird später vom Programmcode durch die Prozentangabe ersetzt.

    Abb. 3: Das Formular frmProgressBar in der Entwurfsansicht

    Danach positionieren Sie unterhalb des Balkens noch zwei Bezeichnungsfelder namens lblTime und lblInfo. Beide Steuerelemente sollten ebenfalls einen transparenten Hintergrund haben. Ersteres zeigt später die noch verbleibende Restzeit an. Das zweite Steuerelement dient der Anzeige eines Textes, der den aktuellen Vorgang dokumentiert.

    Abschließend ordnen Sie unterhalb der Bezeichnungsfelder noch zwei Schaltflächen an, die Sie mit Abbrechen und Pause beschriften. Die Namen lauten btnCancel und btnBreak. Daneben setzen Sie noch ein Textfeld namens txtFocus, dessen Höhe und Breite Sie in 0 ändern. Dieses Feld wird dazu benötigt, den Focus von den beiden Schaltflächen wegzubewegen, um diese beispielsweise auszublenden.

    Die Designarbeiten sind damit abgeschlossen. Abb. 3 zeigt Ihnen noch einmal das komplette Formular zusammen mit den Formulareigenschaften in der Entwurfsansicht.

    Speichern Sie es abschließend unter dem Namen frmProgressBar.

    Steuerung der
    Fortschrittsanzeige

    Die Steuerung der Fortschrittsanzeige erfolgt mit Hilfe von VBA-Programmcode. Zur Erfassung des Codes wechseln Sie mit Hilfe des Code-Symbols in den VBA-Editor des Klassenmoduls, das mit dem Formular verbunden ist.

    Private Sub SetPercentage(Percent As Integer)

        Me.lblPercent.Caption = CStr(Percent) + "%"

        If Percent < 50 Then

            Me.lblPercent.ForeColor = QBColor(1) 'Blau

        Else

            Me.lblPercent.ForeColor = QBColor(15) 'Weiß

        End If

        Me.recProgressBar.Width = m_InitialBarWidth / 100 _
            * Percent

        m_CurrentPercent = Percent

    End Sub

    Quellcode 1

    Private Sub Form_Load()

        m_InitialBarWidth = Me.recProgressBar.Width

    End Sub

    Quellcode 2

    Private Sub SetTime(Percent As Integer)

        Dim SecondsForOnePercent As Double

        If Percent = 0 Then

            Me.lblTime.Caption = "Berechne Restzeit"

        Else

            SecondsForOnePercent = (Timer - m_StartTimer) / (Percent - m_RestartPercent)

            

            Me.lblTime.Caption = "Restdauer: " + SecondsToTime(Fix((100 - Percent) * SecondsForOnePercent) + 1)

        End If

    End Sub

    Quellcode 3

    Im Kopf platzieren Sie die folgenden Deklarationsanweisungen:

    Private m_InitialBarWidth As Long

    Private m_StartTimer As Long

    Private m_MaxSteps As Long

    Private m_Cancel As Boolean

    Private m_RestartPercent As Integer

    Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

    Sind Sie Abonnent?Jetzt einloggen ...
     

    Kompletten Artikel lesen?

    Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

    E-Mail:

    Verwandte Beiträge:

    Formularposition speichern und wiederherstellen

    Modale Dialoge mal anders

    Transparenz und andere Effekte in Formularen

    © 2003-2015 André Minhorst Alle Rechte vorbehalten.