Hallo
Ich habe jetzt ne Inputbox,ich möchte,dass nach jeden 4.Zeichen ein "-" (Bindestrich) automatisch kommt.
Die Zeichenlänge sollte auf 4 Balken (mit 16 Zeichen ) reduziert werden....
z.B.
XXXX-XXXX-XXXX-XXXX
Hallo
Ich habe jetzt ne Inputbox,ich möchte,dass nach jeden 4.Zeichen ein "-" (Bindestrich) automatisch kommt.
Die Zeichenlänge sollte auf 4 Balken (mit 16 Zeichen ) reduziert werden....
z.B.
XXXX-XXXX-XXXX-XXXX
Schau dir mal diesen Thread an [ gelöst ] Mit Entertaste zum nächsten Input Feld wechseln, ist zwar nicht mit InputBox aber ich denke du kannst es eventuell gebrauchen.
Edit: Falsches Lesezeichen [ gelöst ] Maximalzahl von Elementen in einem GUI Input
hm ne sry ,leider net :-/
Hier ma BsP.
[autoit]#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Test-Gui", 232, 83, 192, 124)
$1 = GUICtrlCreateInput("", 16, 32, 201, 21)
$Label1 = GUICtrlCreateLabel("Format: XXXX-XXXX-XXXX-XXXX", 32, 8, 163, 17)
$Button1 = GUICtrlCreateButton("Weiter", 144, 56, 75, 25, $WS_GROUP)
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Hier mein Vorschlag:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Test-Gui", 232, 83, 192, 124)
$1 = GUICtrlCreateInput("", 16, 32, 201, 21)
GUICtrlSetLimit($1, 16)
$Label1 = GUICtrlCreateLabel("Format: XXXX-XXXX-XXXX-XXXX", 32, 8, 163, 17)
$Button1 = GUICtrlCreateButton("Weiter", 144, 56, 75, 25, $WS_GROUP)
;~ GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $output
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$aTemp = StringSplit(GUICtrlRead($1), "")
For $x = 1 To UBound($aTemp) - 1
$output &= $aTemp[$x]
If Mod($x, 4) = 0 And $x < UBound($aTemp) - 1 Then $output &= "-"
Next
MsgBox(0, "Format", $output)
EndSwitch
WEnd
Gruß,
UEZ
Edit: habe noch GUICtrlSetLimit($1, 16) hinzugefügt!
Edit2: sorry, habe das "automatisch" überlesen! -> Oscar's Version unten ist deine Lösung!
Uuuups, hab das falsche Lesezeichen erwischt. [ gelöst ] Maximalzahl von Elementen in einem GUI Input
6.Post von SEuBo.
Hier ist meine Lösung:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Test-Gui", 232, 83, 192, 124)
$1 = GUICtrlCreateInput("", 16, 32, 201, 21)
$Label1 = GUICtrlCreateLabel("Format: XXXX-XXXX-XXXX-XXXX", 32, 8, 163, 17)
$Button1 = GUICtrlCreateButton("Weiter", 144, 56, 75, 25, $WS_GROUP)
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND')
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
Local $nID, $sInput, $aInput
$nID = BitAND($wParam, 0x0000FFFF)
If $nID = $1 Then
$sInput = StringReplace(StringLeft(GUICtrlRead($1), 19), '-', '')
$aInput = StringRegExp(StringUpper($sInput), '.{1,4}', 3)
$sInput = ''
For $i = 0 To UBound($aInput) - 1
$sInput &= $aInput[$i] & '-'
Next
$sInput = StringTrimRight($sInput, 1)
GUICtrlSetData($1, $sInput)
If StringLen($sInput) = 19 Then
GUICtrlSetState($Button1, $GUI_ENABLE)
Else
GUICtrlSetState($Button1, $GUI_DISABLE)
EndIf
EndIf
Return $GUI_RUNDEFMSG
EndFunc
Oscar , sehr schön dein Beispiel. Das kommt gleich mal in meine Sammlung
Hier noch eine Variante (ein Mix aus Oscar's und meiner Variante):
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Test-Gui", 232, 83, 192, 124)
$1 = GUICtrlCreateInput("", 16, 32, 201, 21)
$Label1 = GUICtrlCreateLabel("Format: XXXX-XXXX-XXXX-XXXX", 32, 8, 163, 17)
$label_limit = 19
GUICtrlSetLimit($1, $label_limit)
$Button1 = GUICtrlCreateButton("Weiter", 144, 56, 75, 25, $WS_GROUP)
$iLen_prev = 0
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND')
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
Local $nNotifyCode, $nID, $sInput
$nNotifyCode = BitShift($wParam, 16)
$nID = BitAND($wParam, 0x0000FFFF)
If $nID = $1 Then
GUICtrlSetData($1, StringUpper(GUICtrlRead($1))) ;Großschreibung
$iLen = StringLen(GUICtrlRead($1))
If Mod($iLen + 1, 5) = 0 And $iLen < $label_limit And $iLen > $iLen_prev Then GUICtrlSetData($1,GUICtrlRead($1) & "-")
$iLen_prev = $iLen
If $iLen = $label_limit Then
GUICtrlSetState($Button1, $GUI_ENABLE)
Else
GUICtrlSetState($Button1, $GUI_DISABLE)
EndIf
EndIf
Return $GUI_RUNDEFMSG
EndFunc
Gruß,
UEZ
UEZ auch nicht schlecht. Dein Script hat aber einen Nachteil zum Script von Oscar. Wenn du z.b. 16 Zeichen schreibst, Backspace benutzt und dann wieder ins Input schreibst, werden die - nicht gesetzt.
Sollte jetzt gefixt sein! -> [ gelöst ] Nach jeden 4. Zeichen ein "-" setzen.
UEZ
Und noch ein bisschen kürzer (so habe ich es jetzt in meine Sammlung aufgenommen):
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$hGui = GUICreate('Seriennr. eingeben', 240, 100)
GUICtrlCreateLabel('Format: XXXX-XXXX-XXXX-XXXX', 20, 10, 200, 20)
$hInput = GUICtrlCreateInput('', 20, 30, 200, 25)
GUICtrlSetFont(-1, 12, 400, 0, 'Courier New')
$hOk = GUICtrlCreateButton('Weiter', 146, 64, 75, 25)
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND')
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $hOk
MsgBox(0, 'Seriennr.', GUICtrlRead($hInput))
EndSwitch
WEnd
Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
Local $sSerial
If BitAND($wParam, 0x0000FFFF) = $hInput Then
$sSerial = StringReplace(StringLeft(GUICtrlRead($hInput), 19), '-', '')
$sSerial = StringMid(StringRegExpReplace($sSerial, '.{1,4}', '-$0'), 2)
GUICtrlSetData($hInput, StringUpper($sSerial))
If StringLen($sSerial) = 19 Then
GUICtrlSetState($hOk, $GUI_ENABLE)
Else
GUICtrlSetState($hOk, $GUI_DISABLE)
EndIf
EndIf
Return $GUI_RUNDEFMSG
EndFunc
Kommt nur mir das so vor
oder hat das Ähnlichkeit mit
einem Keygen?
*scherz*
MfG
qixx
Kommt nur mir das so vor
oder hat das Ähnlichkeit mit
einem Keygen?
Wenn jemand vorhätte einen Keygen zu schreiben, würde er nicht daran "scheitern" einen Bindestrich einzufügen.
Das hier kommt allerdings auch mehr einer Installationsroutine nahe, in der eine Seriennummer abgefragt wird.
korrekt ich brauche dies für eine Serial-Code...
mfG
Normalerweise möchte man(n) es größer haben, aber hier die noch kürzere Variante:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form = GUICreate("Seriennummer", 232, 83)
$1 = GUICtrlCreateInput("", 48, 30, 136)
$Label = GUICtrlCreateLabel("Format: XXXX-XXXX-XXXX-XXXX", 32, 8, 163, 17)
GUICtrlSetLimit($1, 19)
$Button = GUICtrlCreateButton("Weiter", 144, 56, 75, 25, $WS_GROUP)
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState()
$iLen_prev = 0
GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND')
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
If BitAND($wParam, 0x0000FFFF) = $1 Then
GUICtrlSetData($1, StringUpper(GUICtrlRead($1))) ;Großschreibung
$i = GUICtrlRead($1)
$iLen = StringLen($i) + 1
If Mod($iLen, 5) = 0 And $iLen > $iLen_prev And $iLen < 20 Then GUICtrlSetData($1, $i & "-")
If Mod($iLen, 5) = 0 And $iLen < $iLen_prev Then GUICtrlSetData($1, StringLeft($i, $iLen - 2))
$iLen_prev = $iLen
If $iLen = 20 Then
GUICtrlSetState($Button, $GUI_ENABLE)
Else
GUICtrlSetState($Button, $GUI_DISABLE)
EndIf
EndIf
Return $GUI_RUNDEFMSG
EndFunc
Gruß,
UEZ
Edit: hoffentlich jetzt Bugfrei!
Einen habe ich auch noch ...
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Test-Gui", 232, 83, 192, 124)
$1 = GUICtrlCreateInput("", 16, 32, 201, 21)
$Label1 = GUICtrlCreateLabel("Format: XXXX-XXXX-XXXX-XXXX", 32, 8, 163, 17)
$Button1 = GUICtrlCreateButton("Weiter", 144, 56, 75, 25, $WS_GROUP)
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND')
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
Local $sInput
Switch (BitAND ($wParam, 0xFFFF))
Case $1
$sInput = StringUpper (GUICtrlRead ($1))
Switch (StringLen ($sInput))
Case 4
ContinueCase
Case 9
ContinueCase
Case 14
GUICtrlSetData ($1, $sInput & '-')
Case 19
GUICtrlSetData ($1, $sInput)
GUICtrlSetState($Button1, BitOR ($GUI_ENABLE, $GUI_FOCUS))
Case Else
GUICtrlSetData ($1, $sInput)
GUICtrlSetState($Button1, $GUI_DISABLE)
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc
Gruß
Greenhorn
Wenn jemand vorhätte einen Keygen zu schreiben, würde er nicht daran "scheitern" einen Bindestrich einzufügen.
Das hier kommt allerdings auch mehr einer Installationsroutine nahe, in der eine Seriennummer abgefragt wird.
Oh man, stimmt. Ich denke natürlich
wieder total umständlich.
MfG
qixx
Ich finde Greenhorn's besser als Oscar's, hab sie mir auch gleich mal abgespeichert für evtl. Pojekte.
Kleine Frage, wozu ist $WS_GROUP da? Da ist doch nur ein Control.