Tabulator in Rich-Text-Feldern

Wenn Sie ein Abonnement des Magazins 'Access im Unternehmen' besitzen, können Sie sich anmelden und den kompletten Artikel lesen.
Anderenfalls können Sie das Abonnement hier im Shop erwerben.

Tabulator in Rich-Text-Feldern

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:

Dies war die Leseprobe dieses Artikels.
Melden Sie sich an, um auf den vollständigen Artikel zuzugreifen.

Bitte geben Sie die Zeichenfolge in das nachfolgende Textfeld ein

Die mit einem * markierten Felder sind Pflichtfelder.

Neues aus unseren Magazinen
Listenfeld: Reihenfolge mehrerer Einträge...

Wir haben bereits in mehreren Beiträgen beschrieben, wie Sie die individuelle Reihenfolge von Elementen einer Tabelle über den Inhalt eines Feldes etwa namens »ReihenfolgeID« einstellen können –... [mehr]

Diagramme mit gefilterten Daten

In Ausgabe 2/2019 haben wir in zwei Artikeln die modernen Diagramme von Access vorgestellt. Im vorliegenen Beitrag zeigen wir Ihnen, wie Sie diese abhängig von den in einem Formular angezeigten... [mehr]

Benutzerverwaltung mit verschlüsselten...

Wenn Sie in einer Access-Anwendung Benutzer verwalten wollen, die sich per Benutzername und Kennwort an die Anwendung anmelden, sollten Sie sehr sensibel mit den in der Anwendung gespeicherten... [mehr]

HTML-Tabellen mit fester Kopfzeile

In den vorherigen Ausgaben von Access im Unternehmen und in der aktuellen Ausgabe arbeiten wir in einigen Beiträgen mit dem Webbrowser-Steuerelement und stellen Daten, die wir mit den Bordmitteln... [mehr]

Flexible HTML-Tabellen mit fester Kopfzeile

Im Beitrag »HTML-Tabellen mit fester Kopfzeile« haben wir gezeigt, wie Sie Daten aus einer bestimmten Abfrage in einem Webbrowser-Steuerelement so anzeigen, dass die Spaltenköpfe oben fixiert... [mehr]

Berechtigungen per HTML verwalten

Im Beitrag »Benutzerverwaltung mit verschlüsselten Kennwörtern« stellen wir eine Lösung vor, in der wir die Berechtigungen von Benutzergruppen an Datenbankobjekten definieren. Dort benötigen wir... [mehr]

Benutzer und Berechtigungen ermitteln

In den Beiträgen »Benutzerverwaltung mit verschlüsselten Kennwörtern« und »Berechtigungen per HTML verwalten« haben wir die Voraussetzungen für eine Benutzerverwaltung geschaffen. Im vorliegenden... [mehr]

Zugriffsrechte mit Datenmakros

Es gibt verschiedene Möglichkeiten, auf Basis des aktuell angemeldeten Benutzers sicherzustellen, dass dieser nur die für ihn vorgesehenen Aktionen mit Daten durchführen darf – beispielsweise durch... [mehr]

Kennwörter generieren

Für den einen oder anderen Zweck möchten Sie vielleicht Kennwörter generieren oder in einer Benutzeroberfläche die Möglichkeit zum Generieren von Kennwörtern anbieten. Wenn Sie etwa Benutzer zu... [mehr]

Neuer Datensatz von Frontend zu Backend

Für manche Themen gibt es keine kurze, prägnante Überschrift. In diesem Fall wollen wir zeigen, wie Sie einen neuen Datensatz anlegen, der in einer temporären Tabelle im Frontend gespeichert wird,... [mehr]