|
Wenn Sie eine TextBox benötigen, die Groß- oder nur
Kleinbuchstaben darstellt, können Sie den so genannten Fensterstil
der TextBox entsprechend setzen. Dann werden alle danach
eingefügten Zeichen in der TextBox jeweils entweder in Groß- oder
Kleinbuchstaben eingestellt. Dabei ist es egal, ob die Zeichen per
Tastatur, über die Zwischenablage oder über eine Zuweisung eines
Strings an die Text- bzw. SelText-Eigenschaft der TextBox eingefügt
werden.
In der Funktion SetTextBoxCase wird zunächst über die
API-Funktion GetWindowLong
mit dem Index GWL_STYLE der aktuell gesetzte Fensterstil ausgelesen.
Dann wird der Fensterstil mit dem gewünschten Stil verknüpft,
wobei zugleich der entgegengesetzte Stil ausmaskiert (gelöscht)
wird. Wird der Funktion ein nicht zulässiger Stil oder 0
im Style-Parameter übergeben, werden beide Stile ausmaskiert. Nun
wird mit der API-Funktion SetWindowLong
der geänderte Wert des Fensterstils wieder zurückgeschrieben.
Der optionale Parameter Convert ist auf True voreingestellt. Wenn
Sie diesen Parameter beim Aufruf weglassen, wird der Inhalt der
Text-Eigenschaft der TextBox entsprechend dem neuen Stil
konvertiert.
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 Any) As Long
Public Enum tbCaseStyleConstants
tbUCase = &H8&
tbLCase = &H10&
End Enum
Public Sub SetTextBoxCase(TextBox As TextBox, _
ByVal Style As tbCaseStyleConstants, _
Optional ByVal Convert As Boolean = True)
Dim nWindowLong As Long
Dim nText As String
Const GWL_STYLE = -16
With TextBox
nWindowLong = GetWindowLong(.hwnd, GWL_STYLE)
Select Case Style
Case tbUCase
nWindowLong = (nWindowLong And Not tbLCase) Or tbUCase
Case tbLCase
nWindowLong = (nWindowLong And Not tbUCase) Or tbLCase
Case Else
nWindowLong = nWindowLong And Not (tbUCase Or tbLCase)
Convert = False
End Select
SetWindowLong .hwnd, GWL_STYLE, nWindowLong
If Convert Then
nText = .Text
.Text = ""
.Text = nText
End If
End With
End Sub
 |
Die Funktion SetTextBoxCase sorgt dafür,
dass eingegebene Zeichen automatisch in Groß- oder
Kleinbuchstaben umgewandelt werden

|

|