RSS
StartseiteKnowledge LibraryTop 10Impressum

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