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.

Bitte teilen Sie uns Ihre Anrede, Ihren Namen und Ihre E-Mail-Adresse mit:

Anrede:
Vorname:
Nachname:
E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 2/2019.

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

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:

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.

Bitte teilen Sie uns Ihre Anrede, Ihren Namen und Ihre E-Mail-Adresse mit:

Anrede:
Vorname:
Nachname:
E-Mail:

© 2003-2018 André Minhorst Alle Rechte vorbehalten.