Zoomfenster im Eigenbau

Wenn Benutzer in Access längere Inhalte von Textfeldern editieren, hilft das Zoomfenster oft weiter. Es zeigt den Inhalt in einem meist größeren Steuerelement und erlaubt das Einstellen der Schriftart und -größe. Es hat allerdings zwei Nachteile: Man kann seine Größe nicht anpassen und außerdem ist es nicht in der Runtime von Access 2007 verfügbar. Zwei Gründe, ein eigenes Zoomfenster zu bauen.

Das gravierendste Problem des originalen Zoomfensters von Access (siehe Bild 1) ist wohl seine beharrliche Weigerung, sich dem Benutzer unter Access 2007 zu zeigen. Das Zoomfenster befindet sich unter Access 2007 in der Datenbank Utility.accda, auf die Access-Anwendungen unter der Runtime aus unbekannten Gründen nicht zugreifen können.

pic001.tif

Bild 1: Das Zoomfenster von Access

Das bezieht sich ausschließlich auf Systeme, auf denen die Runtime-Version tatsächlich installiert ist. Die Aussage, man könne die Runtime-Version einer Datenbank unter Access 2007 ganz einfach testen, indem man ihre Dateiendung in .accdr ändert, stimmt daher nicht ganz: Immerhin funktioniert dies, wenn die Vollversion auf dem betreffenden System installiert ist.

Gelegentlich möchte man das Zoomfenster vielleicht auch mal größer ziehen, um etwa bestimmte Texte im ursprünglichen Umbruch lesen zu können – dies würde zum Beispiel für Listings Sinn machen.

Sollten Sie aus irgendeinem der genannten Gründe mit dem eingebauten Zoomfenster nicht mehr zufrieden sein, bauen Sie sich halt ein neues.

Dazu brauchen Sie ein einfaches Formular, welches das Access Zoomfenster nachbildet, ein Makro namens Autokeys zum Abfangen der Tastenkombination Umschalt + F2 sowie ein wenig Code, der den aktuellen Steuerelementinhalt ausliest und diesen später zurückschreibt.

Formular für das Access Zoomfenster

Das Formular sollte in der Größe skalierbar sein, sowie das Anpassen der Schriftgröße und der Schriftart erlauben. Dazu rufen Sie den entsprechenden Systemdialog auf.

Zunächst bauen Sie das Formular mit den enthaltenen Steuerelementen nach: Dazu benötigen Sie ein großes Textfeld und drei Schaltflächen, die Sie mit txtZoom, cmdOK, cmdAbbrechen und cmdSchriftart benennen. Die Steuerelemente ordnen Sie wie in Bild 2 an.

pic002.tif

Bild 2: Das nachgebaute Zoomfenster in der Entwurfsansicht

Stellen Sie die Formulareigenschaften Bildlaufleisten, Datensatzmarkierer, Navigationsschaltflächen und Trennlinien auf Nein ein.

Kümmern Sie sich dann zunächst um das Anpassen der Größe. Dies erledigen Sie mit einer Prozedur, die durch die Ereigniseigenschaft Bei Größenänderung ausgelöst wird (s. Listing 1).

Listing 1: Anpassen der Größe und Position der Steuerelemente beim ändern der Formulargröße

Private Sub Form_Resize()
    Const cRand As Integer = 100
    Dim i As Integer
    With Me!txtZoom
        .Left = cRand
        .Width = Me.InsideWidth - 3 * cRand - Me.cmdOK.Width
        .Height = Me.InsideHeight - 2 * cRand - 10
        .Top = cRand
    End With
    With Me.cmdOK
        .Left = Me.InsideWidth - cRand - .Width
        .Top = cRand
    End With
    With Me.cmdAbbrechen
        .Left = Me.InsideWidth - cRand - .Width
        .Top = Me.cmdOK.Height + 2 * cRand
    End With
    With Me.cmdSchriftart
        .Left = Me.InsideWidth - cRand - .Width
        .Top = 0
        .Top = (Me.InsideHeight - cRand - .Height - 5)
    End With
End Sub

Zoom-Funktion

Bevor wir uns an die Funktionen der einzelnen Schaltflächen wagen, sind ein paar Gedanken über die Vorgehensweise angebracht. Wie ruft man das Zoomfenster überhaupt auf? Wir haben es bereits angedeutet: Die Tastenkombination Umschalt + F2 soll durch ein Tastaturmakro abgefangen werden. Doch was macht das Makro dann am besten zuerst mal eine VBA-Funktion aufrufen. Von dort aus programmiert es sich doch viel leichter. Diese nennen wir ShowZoom, dementsprechend sieht das Makro aus wie in Bild 3.

pic003.tif

Bild 3: Das Tastaturmakro in der Entwurfsansicht

Ein kleiner Test nach dem Speichern des Makros unter der Bezeichnung AutoKeys sollte nun einen Fehler auslösen, da die benötigte Funktion noch nicht vorhanden ist.

Und was bewirkt diese Funktion nun eigentlich braucht sie doch nur das Formular aufzurufen, oder Mitnichten: Woher weiß das Formular denn, woher es den anzuzeigenden Text nehmen soll Die Funktion muss beim Aufrufen zumindest den Textfeldinhalt per OpenArgs an das Zoom-Formular übergeben.

An den Inhalt muss man aber auch erstmal herankommen. Es gibt allerdings eine Methode namens Screen.ActiveControl, die einen Verweis auf das aktuell im Fokus stehende Steuerelement liefert. Diesen greifen Sie sich und schicken den enthaltenen Text per OpenArgs an das Formular, das als modaler Dialog geöffnet wird; das heißt, dass der Benutzer keine anderen Access-Objekte verwenden kann, solange dieses Formular geöffnet ist. Außerdem läuft der aufrufende Code nicht weiter, bis das Formular den Fokus verliert. Im Formular kann der Benutzer den Text dann anpassen und das Formular dann entweder mit der OK-Taste oder der Abbrechen-Taste schließen. Bei OK wird das Formular nur unsichtbar gemacht, es verliert aber dennoch den Fokus. Die aufrufende Prozedur liest dann den neuen Inhalt des Textfeldes aus, schreibt diesen in das Ausgangstextfeld und schließt das Formular endgültig. Um das Verhalten des Original-Zoomfensters möglichst genau nachzubilden, soll die Einfügemarke am Ende des Ausdrucks landen. Im letzten Schritt schließt die Funktion das Zoom-Formular endgültig (s. Listing 2).

Listing 2: Anzeigen des Zoom-Formulars und Auslesen des Hinhalts

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar