In Inputbox nur Zahlen und ein buchstabe Zulassen

  • hi... also was ich will ist, dass in einer inputbox nur die eingabe von m1 bis m10 zuzugelassen werden... ähnlich wie bei $ES_NUMBER. also das wenn was falsches eingegeben wird dieser balloontipp angezeigt wird...


    habss noch ma anders versucht mit ner prüfung funzt aba irgendwie nicht...

    [autoit]

    If Not GUICtrlRead($Input5)= "M1" Or "M2" Or "M3" Or "M4" Or "M5" Or "M6" Or "M7" Or "M8" Or "M9" Or "M10" Then
    $Counter = 0
    MsgBox(0, "Stop", "Falsche Eingabe! Verwende nur M1 bis M10!")
    _Quellcode()
    EndIf

    [/autoit]

    würd mich freun wenn ihr helfen könntet :)

    Einmal editiert, zuletzt von sir-gunny (9. November 2008 um 20:33)

  • Hi,
    es muß so heißen

    [autoit]

    If Not GUICtrlRead($Input5)= "M1" Or Not GUICtrlRead($Input5)= "M2" ;usw

    [/autoit]
  • [autoit]

    $read=GUICtrlRead ( $Input1 )
    If $read = "M1" Or $read="M2" Or $read="M3" Or $read="M4" Or $read="M5" Or $read="M6" Or $read="M7" Or $read="M8" Or $read="M9" Or $read="M10" Then
    MsgBox ( 0, "Prima", "Klappt!" )
    Else
    MsgBox ( 0, "Falsche Eingabe!!", "Geben sie nur M1-M10 ein" )
    EndIf

    [/autoit]
  • [autoit]

    For $i = 1 to 10
    If GUICtrlRead($Input5) <> "M" & $i Then
    MsgBox(0, "Stop", "Falsche Eingabe! Verwende nur M1 bis M10!")
    _Quellcode()
    EndIf
    Next

    [/autoit]

    alternativ:

    [autoit]

    $Input5 = GUICtrlCreateCombo("", "", "", Default, Default, $CBS_DROPDOWNLIST)
    GUICtrlSetData(-1, "M1|M2|M3|M4|M5|M6|M7|M8|M9|M10")

    [/autoit][autoit][/autoit][autoit]

    If GUICtrlRead($Input5) = "" Then
    MsgBox(0, "Stop", "Falsche Eingabe! Verwende nur M1 bis M10!")
    _Quellcode()
    EndIf

    [/autoit]
    • Offizieller Beitrag

    Hi,

    sowas

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>

    [/autoit][autoit][/autoit][autoit]

    $GUI = GUICreate(" My GUI", 350, 180)
    $hInput = GUICtrlCreateInput("", 10, 5, 300, 20)
    GUICtrlSetLimit(-1, 3)
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
    Local $controlID = _WinAPI_LoWord($wParam)
    If $controlID = $hInput Then
    If StringLeft(GUICtrlRead($hInput), 1) <> 'M' Then GUICtrlSetData($hInput, '')
    ; hier jegliche Logik rein.
    EndIf
    EndFunc ;==>MY_WM_COMMAND

    [/autoit]

    Mega

  • Das ist geil!
    Gibts es zu WM_COMMAND ein Tutorial? =)
    Und hat es noch ander Funktionen/Anwendungsbereiche?

  • hi leutz :)

    THX für die vielen antworten :) haben aba alle nich das gemacht was sie sollten... keine ahnung warum... habs jetzt aba anders gemacht...


    [autoit]

    If GUICtrlRead($Input5) = "M1" Then
    ElseIf GUICtrlRead($Input5) = "M2" Then
    ElseIf GUICtrlRead($Input5) = "M3" Then
    ElseIf GUICtrlRead($Input5) = "M4" Then
    ElseIf GUICtrlRead($Input5) = "M5" Then
    ElseIf GUICtrlRead($Input5) = "M6" Then
    ElseIf GUICtrlRead($Input5) = "M7" Then
    ElseIf GUICtrlRead($Input5) = "M8" Then
    ElseIf GUICtrlRead($Input5) = "M9" Then
    ElseIf GUICtrlRead($Input5) = "M10" Then
    Else
    MsgBox(0, "Stop", "Falsche Eingabe! Verwende nur M1 bis M10!")
    _Quellcode()
    EndIf

    [/autoit]

    zwar nicht schön aber selten :)


    @Xenobiologist: thx aba das is irgendwie zu hoch für mich... hab damit bisel rumgespielt aba die restlichen zahlen von 1-10 kann ich damit nich einzeln zulassen... jedenfalls bekomm ichs nich hin...^^

    4 Mal editiert, zuletzt von sir-gunny (9. November 2008 um 19:48)

  • Hi,
    hab meins nochmal korrigiert
    Dürfte nun klappen

    [autoit]

    If $read <> "M1" And $read <> "M2" And $read <> "M3" And $read <> "M4" ...

    [/autoit]
    • Offizieller Beitrag

    Hi,
    ich hab dir mal 'ne schönere Variante gebastelt. ;)

    [autoit]

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    Opt("GUIOnEventMode", 1)
    $Form1 = GUICreate("Test", 369, 420, 331, 130)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    $Input1 = GUICtrlCreateInput("", 104, 19, 65, 21)
    $lbFalse = GUICtrlCreateLabel('Eingabe unzulässig', 180, 22, 100)
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlSetState(-1, $GUI_HIDE)
    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_COMMAND, 'MY_WM_COMMAND')

    [/autoit][autoit][/autoit][autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func Form1Close()
    Exit
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $hCtrl = $lParam
    Local $hInput = GUICtrlGetHandle($Input1)
    If $hCtrl = $hInput And $nNotifyCode = 1024 Then
    GUICtrlSetState($lbFalse, $GUI_HIDE)
    If StringLen(GUICtrlRead($Input1)) > 1 And (Not StringRegExp(GUICtrlRead($Input1) , "M(?i)(10|[1-9])(?!.)")) Then
    GUICtrlSetState($lbFalse, $GUI_SHOW)
    GUICtrlSetData($Input1, '')
    Return
    EndIf
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]
  • @Tweaky : thx :) genau so wollt ichs haben :) sieht auch besser aus als dieses ständige elseif^^

    BugFix : woa..^^ wie geil is das denn :) Hab aba noch was verändert... und zwar wenn die inputbox neu geschrieben wird das gleich das M steht... GUICtrlSetData($Input1, 'M') ... so ises perfekt:) big THX

    2 Mal editiert, zuletzt von sir-gunny (9. November 2008 um 20:13)

    • Offizieller Beitrag

    Hi,
    wenn das 'M' sowieso immer dasein muß, braucht es ja gar nicht ins Input. Dann kann man auch einfacher prüfen.
    Nun kannst du wirklich nur noch 1-10 eintippen. ;)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    Opt("GUIOnEventMode", 1)
    $Form1 = GUICreate("Test", 369, 420, 331, 130)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    GUICtrlCreateLabel('M', 90, 22, 12)
    GUICtrlSetFont(-1, 11, 600)
    $Input1 = GUICtrlCreateInput("", 104, 19, 28, 21, $ES_NUMBER)
    $lbFalse = GUICtrlCreateLabel('Eingabe unzulässig', 180, 22, 100)
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlSetState(-1, $GUI_HIDE)
    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_COMMAND, 'MY_WM_COMMAND')

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func Form1Close()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $hCtrl = $lParam
    Local $hInput = GUICtrlGetHandle($Input1)
    If $hCtrl = $hInput And $nNotifyCode = 1024 Then
    Local $read = GUICtrlRead($Input1)
    GUICtrlSetState($lbFalse, $GUI_HIDE)
    If (StringLen($read) = 1 And $read = 0) Or (StringLen($read) > 1 And _
    (Not StringRegExp($read , "((?<!.)[1-9]|10)(?!.)"))) Then
    GUICtrlSetState($lbFalse, $GUI_SHOW)
    GUICtrlSetData($Input1, '')
    EndIf
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]
  • joa... so gehts auch aba ich finds schöner wenn das M in der inputbox ist ^^ bin ein kleiner perfektionist deshalb diese umstände(unbedingt erforderlih ises nämlich nich aba wenn man schon was proggt solls ja auch gut werden! außerdem machts spaß so rumzuknobeln^^) ... :D aba trotz dem ein riesen dank an dich und allen die hier mir geholfen haben :)