Automatisch groß oder klein
Groß- oder Kleinschreibung in der Textbox erzwingen
Möchte man in einer TextBox reine Groß- oder Kleinschreibung erzwingen, genügt das Setzen des entsprechenden TextBox-Stils, um die Eingaben des Benutzers automatisch in Groß- oder Kleinschreibung umzuwandeln.
Wenn Sie wollen, dass Eingaben in einer Textbox nur groß- oder klein geschrieben werden können, können Sie entweder den Text nachträglich über die Funktionen UCase$ und LCase$ im Change-Ereignis umwandeln, oder überreden die TextBox gleich selber diese Umwandlung vorzunehmen. Dazu muss lediglich der TextBox-Stil ES_UPPERCASE oder ES_LOWERCASE über die API Funktion SetWindowLong gesetzt werden.
Zwei Eigenschafts-Prozeduren erledigen sämtliches Beiwerk. Über die Get-Prozedur, kann der aktuelle Stil gelesen werden, über die Let-Prozedur wird der gewünschte Stil festgelegt. Als Parameter erwarten diese Prozeduren die betreffende TextBox:
Private Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" ( _
ByVal hwnd As Long, _
ByVal nIndex As Long _
) As Long
Private Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" ( _
ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long _
) As Long
Private Const GWL_STYLE = (-16)
Private Const ES_LOWERCASE = &H10&
Private Const ES_UPPERCASE = &H8&
Public Enum TextConversionConstants
tcNone = 0
tcUppercase = 1
tcLowercase = 2
End Enum
Public Property Get TBCaseConversion(ByRef TextBox As TextBox) _
As TextConversionConstants
Dim lStyle As Long
lStyle = GetWindowLong(TextBox.hwnd, GWL_STYLE)
If (lStyle And ES_LOWERCASE) = ES_LOWERCASE Then
TBCaseConversion = tcLowercase
ElseIf (lStyle And ES_UPPERCASE) = ES_UPPERCASE Then
TBCaseConversion = tcUppercase
End If
End Property
Public Property Let TBCaseConversion(ByRef TextBox As TextBox, _
ByVal New_Value As TextConversionConstants)
Dim lStyle As Long
lStyle = GetWindowLong(TextBox.hwnd, GWL_STYLE)
lStyle = lStyle And Not (ES_LOWERCASE Or ES_UPPERCASE)
Select Case New_Value
Case tcLowercase
lStyle = lStyle Or ES_LOWERCASE
Case tcUppercase
lStyle = lStyle Or ES_UPPERCASE
End Select
SetWindowLong TextBox.hwnd, GWL_STYLE, lStyle
End Property
Download
- Modul modTBCaseConv und Beispielprojekt (tbcaseconv.zip - 3 KB)