In Anlehnung an den Tipp Auto-Indent für die (RTF)TextBox möchten wir Ihnen heute zeigen, wie sich eine AutoIndent-Funktion für die Standard-TextBoxen unter MS-Access realisieren lässt. Option Explicit ' In Anlehnung an: ' http://www.vbarchiv.net/archiv/tipp_1162.html ' von Jürgen Sorko ' abgeaendert für ACCESS, 2004-12-09 rimi Public Function autoIndent(oTextBox As Object) ' ********************************************************************* ' Rückt den Text ein bei ENTER (wie in der vorhergehenden Zeile) ' ********************************************************************* ' Die Eigenschaft "Eingabetastenverhalten" des Textfeldes ' steht auf "Neue Zeile im Feld" ' ------------------------------------------------------------ ' Beispiel für FunktionsAufruf im Formular-Code (Bei Taste) : ' ------------------------------------------------------------ ' Private Sub Test_Text_KeyPress(KeyAscii As Integer) ' If KeyAscii = vbKeyReturn Then ' ' Beim Drücken von Return, neuen Absatz autom. einrücken ' KeyAscii = 0 ' Call autoIndent(Screen.ActiveControl) ' End If ' End Sub ' ******************************************************************** Dim nSpaces As Long Dim OLD_START As Long With oTextBox OLD_START = .SelStart ' Anzahl Leerzeichen der aktuellen Zeile nSpaces = getLastSpaces(.Text, .SelStart) If OLD_START = Len(.Text) Then ' Sonderfall letzte zeile,ACCESS löscht Leerzeichen am Ende! ' Deshalb wird dieValue-Eigenschaft verwendet .Value = .Text & vbNewLine & Space$(nSpaces) Else ' Zeilenumbruch und Anzahl ermittelter Leerzeichen einfügen ' an die aktuelle Cursor-Position .SelStart = OLD_START Dim OLD_AFTER OLD_AFTER = .AfterUpdate ' merken Aktualisierung-Ereignis .AfterUpdate = "" ' Abblocken des Nach Aktualisierung-Ereignisses .SelText = vbNewLine & Space$(nSpaces) ' Löst aus ! .AfterUpdate = OLD_AFTER ' Wieder aktivieren End If ' Cursor positionieren .SelStart = OLD_START + nSpaces + 2 End With End Function Public Function getLastSpaces(ByVal sText As String, _ nCurPos As Long) As Long ' ************************************************************** ' Gibt die Anzahl der führenden Leerzeichen der ' aktuellen Zeile im TextFeld-Control aus ' ************************************************************** ' Fehlerbehanldung aktivieren (sicher ist sicher) On Error Resume Next Dim nPos As Long Dim nSpaces As Long ' position des 1. NewLine vor akt. pos. nPos = InStrRev(Left$(sText, nCurPos), vbNewLine) If nPos > 0 Then ' Newline gefunden nPos = nPos + 2 ' String,Start,Länge,Leerzeichen zählen While Mid$(sText, nPos, 1) = " " nSpaces = nSpaces + 1 nPos = nPos + 1 Wend ElseIf nPos = 0 Then ' kein Newline gefunden (=ErsteZeile) nPos = 1 ' String,Start,Länge,Leerzeichen zählen While Mid$(sText, nPos, 1) = " " nSpaces = nSpaces + 1 nPos = nPos + 1 Wend End If getLastSpaces = nSpaces End Function Dieser Tipp wurde bereits 13.923 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung sevAniGif (VB/VBA) Anzeigen von animierten GIF-Dateien Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |