Tabulator in Rich-Text-Feldern

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Hinzufügen eines Feldes mit dem Datentyp Langer Text und dem Textformat Rich-Text

Bild 1: Hinzufügen eines Feldes mit dem Datentyp Langer Text und dem Textformat Rich-Text

Ein Kunde fragte, ob es möglich ist, im Text von Memofeldern im Rich-Text-Format auch das Tabulator-Zeichen einzugeben und damit eine strukturiertere Darstellung von Inhalten zu erreichen – vor allem für die Ausgabe in Berichten. Dazu sind mir einige Ideen gekommen, von denen sich aber nicht alle so einfach umsetzen ließen, wie es gedacht war. Schließlich hat sich aber doch noch eine sehr gut programmierbare Lösung herauskristallisiert.

In der Beispieldatenbank legen wir zunächst eine Tabelle an, die neben dem Primärschlüsselfeld TextID noch die Felder Betreff mit dem Datentyp Kurzer Text und das Feld Inhalt mit dem Datentyp Langer Text enthält (siehe Bild 1). Für dieses Feld stellen wir außerdem die Eigenschaft Textformat auf Rich-Text ein.

Hinzufügen eines Feldes mit dem Datentyp Langer Text und dem Textformat Rich-Text

Bild 1: Hinzufügen eines Feldes mit dem Datentyp Langer Text und dem Textformat Rich-Text

Danach erstellen wir ein Formular, das wir über die Eigenschaft Datensatzquelle an die Tabelle tblTexte binden. Danach ziehen wir alle Felder dieser Tabelle aus der Feldliste in den Detailbereich des Formularentwurfs. Das Feld Inhalt gestalten wir etwas größer und stellen seine Eigenschaften Horizontaler Anker und Vertikaler Anker auf Beide ein, damit es seine Größe mit der des Formulars verändert (siehe Bild 2).

Formular zur Anzeige des Rich-Text-Feldes

Bild 2: Formular zur Anzeige des Rich-Text-Feldes

Normales Tabulatur-Verhalten

Danach wird es interessant. Wir wechseln in die Formularansicht des Formulars und setzen den Fokus in das Textfeld, das an das Feld Inhalt gebunden ist und dessen Namen wir zuvor noch auf txtInhalt ändern.

Wenn wir nun ein paar Zeichen eingeben und dann die Tabulator-Taste drücken, erhalten wir das standardmäßige Verhalten: Access verschiebt schlicht den Fokus auf das nächste Steuer-element, in diesem Fall auf das Feld TextID, und wechselt im gleichen Zuge den Datensatz, da unser Feld txtInhalt das letzte Steuer-element in der Aktivierreihenfolge ist (siehe Bild 3).

Die Tabulator-Taste im letzten Feld der Aktivierreihenfolge wechselt zum nächsten Datensatz.

Bild 3: Die Tabulator-Taste im letzten Feld der Aktivierreihenfolge wechselt zum nächsten Datensatz.

Tabulator-Taste abfangen

Wir müssen also eine Möglichkeit finden, die Tabulator-Taste abzufangen, wenn sich der Fokus gerade im Textfeld txtInhalt befindet. Dann soll ein Tabulator-Zeichen in den Text eingefügt und die eigentliche Funktion der Tabulator-Taste unterbunden werden.

Dies erledigen wir mit einer passenden Ereignisprozedur. Wir müssen nur noch das passende Ereignis finden. Dabei handelt es sich vermutlich um das Ereignis Bei Taste auf oder Bei Taste ab. Um das Tabulator-Zeichen zum richtigen Zeitpunkt einzufügen, schauen wir uns an, wann eines der anderen Zeichen im Textfeld ausgegeben wird – beim Herabdrücken der Taste oder beim Loslassen.

Ein kurzes Experiment zeigt schnell, dass herkömmliche Zeichen immer direkt beim Herunterdrücken der Taste ausgegeben werden. Also verwenden wir das Ereignis Bei Taste ab. Für dieses stellen wir den Wert auf [Ereignisprozedur] ein und klicken dann auf die Schaltfläche mit den drei Punkten () rechts von der Eigenschaft.

Die im nun erscheinenden VBA-Editor erscheinende Ereignisprozedur ergänzen wir um eine Anweisung, die den Wert des Parameters KeyCode dieser Ereignisprozedur im Direktbereich des VBA-Editors ausgibt:

Private Sub Inhalt_KeyDown(KeyCode As Integer, _
         Shift As Integer)
     Debug.Print KeyCode
End Sub

Damit wechseln wir wieder in die Formularansicht und betätigen im Textfeld txtInhalt die Tabulator-Taste, um den Wert für KeyCode für diese Taste zu ermitteln. Das Ergebnis lautet 9.

Wollen wir die eigentliche Funktion der Tabulator-Taste unterbinden, müssen wir also in der Prozedur prüfen, ob der Parameter KeyCode dem Wert 9 entspricht. Das erledigen wir in einer Select Case-Bedingung. Damit die übliche Funktion der Tabulator-Taste nicht ausgeführt wird, stellen wir KeyCode in diesem Fall auf den Wert 0 fest. Dies sieht dann in der Ereignisprozedur txtInhalt_KeyDown wie folgt aus:

Private Sub Inhalt_KeyDown(KeyCode As Integer, _
         Shift As Integer)
     Select Case KeyCode
         Case 9
             KeyCode = 0
     End Select
End Sub

Damit können Sie nun zumindest schon einmal die Tabulator-Taste im Textfeld txtInhalt betätigen, ohne dass das Formular direkt zum nächsten Datensatz wechselt – auch wenn noch kein Tabulator-Zeichen erscheint.

Tabulatur-Zeichen einfügen

Fehlt nur noch ein wenig Code, mit dem wir immer dann, wenn der Benutzer die Tabulator-Taste betätigt, ein Tabulator-Zeichen im Text des Textfeldes unterbringen.


Nur für Abonnenten

Ab hier wird’s wirklich spannend – der Rest ist exklusiv für Abonnenten.

Mit dem Abo von Access im Unternehmen bekommst du den kompletten Artikel – inklusive vollständigem Code, Beispieldatenbank und Schritt-für-Schritt-Erklärung.

So sparst du dir stundenlanges Herumprobieren, vermeidest teure Fehler in deiner Access-Anwendung und kannst Lösungen direkt in deinem Unternehmen einsetzen, statt nur darüber zu lesen.

Teste Access im Unternehmen jetzt 4 Wochen lang kostenlos: Voller Zugriff auf alle Artikel, Downloads und Beispieldatenbanken. Kein Risiko – wenn es für dich nicht passt, kündigst du einfach innerhalb der ersten vier Wochen.

Bereits Abonnent? Hier einloggen


Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →

Schreibe einen Kommentar