Du kannst ja auch während der Eingabe die Schriftfarbe ändern um auf Unterschreiten der Länge aufmerksam zu machen. Das Bsp. ermöglicht dir beliebig viele Inputs mit dieser Funktion zu überwachen, die jeweils unterschiedliche Längen zulassen. Du kannst auch während der Programmausführung die Längen Überschreiben, indem du die Funktion "_SetTextLimit" erneut aufrufst.
Spoiler anzeigen
$hGui = GUICreate('Test')
$cIn1 = GUICtrlCreateInput('', 20, 20, 150, 20)
_SetTextLimit($cIn1, 6) ; == Mindestlänge: 6
$cIn2 = GUICtrlCreateInput('', 20, 60, 150, 20)
_SetTextLimit($cIn2, 10) ; == Mindestlänge: 10
GUISetState()
[/autoit] [autoit][/autoit] [autoit]GuiRegisterMsg($WM_COMMAND, 'WM_COMMAND')
[/autoit] [autoit][/autoit] [autoit]While 1
Switch GUIGetMsg()
Case -3
Exit
EndSwitch
WEnd
Func _SetTextLimit($_iControl, $_iLimit, $_sFunc='')
Local $hCtrl = $_iControl
If Not IsHWnd($hCtrl) Then $hCtrl = GUICtrlGetHandle($hCtrl)
Local Static $aCtrl
Local $aTmp[1][2]
If $_sFunc = 'get' Then
If Not IsArray($aCtrl) Then Return -1
For $i = 0 To UBound($aCtrl) -1
If $aCtrl[$i][0] = $hCtrl Then Return $aCtrl[$i][1]
Next
Return -1
EndIf
If Not IsArray($aCtrl) Then
$aTmp[0][0] = $hCtrl
$aTmp[0][1] = $_iLimit
Else
$aTmp = $aCtrl
Local $fMatch = False
For $i = 0 To UBound($aTmp) -1
If $aTmp[$i][0] = $hCtrl Then
$aTmp[$i][1] = $_iLimit
$fMatch = True
ExitLoop
EndIf
Next
If Not $fMatch Then
ReDim $aTmp[UBound($aTmp)+1][2]
$aTmp[UBound($aTmp)-1][0] = $hCtrl
$aTmp[UBound($aTmp)-1][1] = $_iLimit
EndIf
EndIf
$aCtrl = $aTmp
EndFunc
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iIDFrom, $iCode, $hWndEdit, $iLen
$hWndFrom = $ilParam
$iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
Local $iMaxLen = _SetTextLimit($iIDFrom, 0, 'get')
If $iMaxLen = -1 Then Return $GUI_RUNDEFMSG
$hWndEdit = GUICtrlGetHandle($iIDFrom)
$iLen = StringLen(GUICtrlRead($iIDFrom))
If $iLen < $iMaxLen Then ; == wenn Überschreiten markiert werden soll, einfach ">" statt "<" verwenden
GUICtrlSetColor($iIDFrom, 0xFF0000)
Else
GUICtrlSetColor($iIDFrom, 0x000000)
EndIf
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND