Pflichtlänge

  • Hallo.

    Ich möchte, wenn man auf den OK-Button drückt, erst einmal überprüft wird, ob ich jedem Feld genau 5 Buchstaben/Zahlen drinne sind abfragen.

    Leider bekomme ich das derzeitig einfach nicht hin.

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <GUIConstants.au3>

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

    $mygui = GUICreate("MYGui", 367, 98, 193, 115)
    $Label1 = GUICtrlCreateLabel("Bitte jeweils 5 Zahlen/Buchstaben eintragen.", 0, 0, 366, 17, $SS_CENTER)
    $Input5 = GUICtrlCreateInput("", 24, 32, 57, 21, BitOR($ES_CENTER,$ES_UPPERCASE,$ES_AUTOHSCROLL))
    GUICtrlSetLimit(-1, 5)
    $Input1 = GUICtrlCreateInput("", 88, 32, 57, 21, BitOR($ES_CENTER,$ES_UPPERCASE,$ES_AUTOHSCROLL))
    GUICtrlSetLimit(-1, 5)
    $Input2 = GUICtrlCreateInput("", 152, 32, 57, 21, BitOR($ES_CENTER,$ES_UPPERCASE,$ES_AUTOHSCROLL))
    GUICtrlSetLimit(-1, 5)
    $Input3 = GUICtrlCreateInput("", 216, 32, 57, 21, BitOR($ES_CENTER,$ES_UPPERCASE,$ES_AUTOHSCROLL))
    GUICtrlSetLimit(-1, 5)
    $Input4 = GUICtrlCreateInput("", 280, 32, 57, 21, BitOR($ES_CENTER,$ES_UPPERCASE,$ES_AUTOHSCROLL))
    GUICtrlSetLimit(-1, 5)
    $btnok = GUICtrlCreateButton("&Ok", 144, 64, 75, 25, 0)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    Case $btnok

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

    Danke schon jetzt für evtl. Hilfe.

    LG, Lina

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hallo @pee.

    ok, aber wie frage ich ab, ob in jedem Feld 5 Buchtstaben/Zahlen oder beides drinne ist.
    Ist muß einfach abfragen, ob in jedem Feld 5 drinne sind und nicht mehr und nicht weniger.

    Das ist mein großes Problem !!!

    LG, Lina

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    • Offizieller Beitrag

    Hallo

    Meinst du sowas?

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>

    $mygui = GUICreate("MYGui", 367, 98, 193, 115)
    $Label1 = GUICtrlCreateLabel("Bitte jeweils 5 Zahlen/Buchstaben eintragen.", 0, 0, 366, 17, $SS_CENTER)
    $Input5 = GUICtrlCreateInput("", 24, 32, 57, 21, BitOR($ES_CENTER,$ES_UPPERCASE,$ES_AUTOHSCROLL))
    GUICtrlSetLimit(-1, 5)
    $Input1 = GUICtrlCreateInput("", 88, 32, 57, 21, BitOR($ES_CENTER,$ES_UPPERCASE,$ES_AUTOHSCROLL))
    GUICtrlSetLimit(-1, 5)
    $Input2 = GUICtrlCreateInput("", 152, 32, 57, 21, BitOR($ES_CENTER,$ES_UPPERCASE,$ES_AUTOHSCROLL))
    GUICtrlSetLimit(-1, 5)
    $Input3 = GUICtrlCreateInput("", 216, 32, 57, 21, BitOR($ES_CENTER,$ES_UPPERCASE,$ES_AUTOHSCROLL))
    GUICtrlSetLimit(-1, 5)
    $Input4 = GUICtrlCreateInput("", 280, 32, 57, 21, BitOR($ES_CENTER,$ES_UPPERCASE,$ES_AUTOHSCROLL))
    GUICtrlSetLimit(-1, 5)
    $btnok = GUICtrlCreateButton("&Ok", 144, 64, 75, 25, 0)
    GUISetState(@SW_SHOW)

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    Case $btnok
    for $i = 1 To 5
    If StringLen(GUICtrlRead(Eval("Input"&$i))) <> 5 Then
    GUICtrlSetBkColor(Eval("Input"&$i),0xff0000)
    Else
    GUICtrlSetBkColor(Eval("Input"&$i),0x00ff00)
    EndIf
    Next
    MsgBox(48,"","In den Rot makierten Inputs wurden nicht 5 Zahlen/Buchstaben eingegeben!")

    EndSwitch
    WEnd

    [/autoit]

    Mfg Spider

  • If StringLen(GUICTRLRead($Input1)) and StringLen(GUICTRLRead($Input2)) and StringLen(GUICTRLRead($Input3)) = 5 Then

    das prüft also, ob in jedem Eingabefeld 5 Buchtaben/Zahlen drinne stehen?

    Ich werde es mal testen.

    LG, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Zitat

    Original von Alina
    ...
    das prüft also, ob in jedem Eingabefeld 5 Buchtaben/Zahlen drinne stehen?


    Nö, das prüft nur, ob fünf Zeichen drinstehen.
    Das prüft, ob es nur Alphanumerische Zeichen sind:

    [autoit]

    If StringIsAlNum ( "string" ) = 1 then
    MsgBox(0,"Input", "Zahlen und Buchstaben")
    Else
    MsgBox(0,"Input", "Irgendwas ausserhalb A-Z, 0-9")
    EndIf

    [/autoit]

    Gruß
    Westi

  • Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <GUIConstants.au3>

    $mygui = GUICreate("MYGui", 367, 98, 193, 115)
    $Label1 = GUICtrlCreateLabel("Bitte jeweils 5 Zahlen/Buchstaben eintragen.", 0, 0, 366, 17, $SS_CENTER)
    $Input5 = GUICtrlCreateInput("", 24, 32, 57, 21, BitOR($ES_CENTER,$ES_UPPERCASE,$ES_AUTOHSCROLL))
    GUICtrlSetLimit(-1, 5)
    $Input1 = GUICtrlCreateInput("", 88, 32, 57, 21, BitOR($ES_CENTER,$ES_UPPERCASE,$ES_AUTOHSCROLL))
    GUICtrlSetLimit(-1, 5)
    $Input2 = GUICtrlCreateInput("", 152, 32, 57, 21, BitOR($ES_CENTER,$ES_UPPERCASE,$ES_AUTOHSCROLL))
    GUICtrlSetLimit(-1, 5)
    $Input3 = GUICtrlCreateInput("", 216, 32, 57, 21, BitOR($ES_CENTER,$ES_UPPERCASE,$ES_AUTOHSCROLL))
    GUICtrlSetLimit(-1, 5)
    $Input4 = GUICtrlCreateInput("", 280, 32, 57, 21, BitOR($ES_CENTER,$ES_UPPERCASE,$ES_AUTOHSCROLL))
    GUICtrlSetLimit(-1, 5)
    $btnok = GUICtrlCreateButton("&Ok", 144, 64, 75, 25, 0)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    Case $btnok

    If StringLen(GUICTRLRead($Input5)) and StringLen(GUICTRLRead($Input1)) and StringLen(GUICTRLRead($Input2)) and StringLen(GUICTRLRead($Input3)) and StringLen(GUICTRLRead($Input4)) = 5 Then
    MsgBox(4096, "Rückmeldung", "es sind jeweils 5 Buchstaben/Zahlen pro Feld.", 10)
    Else
    MsgBox(4096, "Rückmeldung", "In jedem Feld muessen 5 Buchstaben/Zahlen sein.", 10)

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

    EndIf

    EndSwitch
    WEnd

    [/autoit]

    Wo ist hier nochd er Fehler??? X(

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    • Offizieller Beitrag
    [autoit]

    If StringLen(GUICTRLRead($Input5)) and StringLen(GUICTRLRead($Input1)) and StringLen(GUICTRLRead($Input2)) and StringLen(GUICTRLRead($Input3)) and StringLen(GUICTRLRead($Input4)) = 5 Then

    [/autoit]

    ==> falsch

    Richtig:

    [autoit]

    If StringLen(GUICTRLRead($Input5)) = 5 and _
    StringLen(GUICTRLRead($Input1)) = 5 and _
    StringLen(GUICTRLRead($Input2)) = 5 and _
    StringLen(GUICTRLRead($Input3)) = 5 and _
    StringLen(GUICTRLRead($Input4)) = 5 Then

    [/autoit]
  • OK, jetzt läuft es auch.

    Super und DANKE !!!!

    LG, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Sorry GtaSpider .

    Da habe ich Dich glatt übersehen? Vllt. kannst das ja noch mal verzeichen.

    Habe jetzt von jedem etwas genommen. Von @pee, @bug & @gta.

    Jeder bekommt eine virtuelle Bussytüte !!! :D

    Ging alles bisschen schnell.

    LG und DANKE auch für die gute ID.

    LG, Lina.

    Edit GtaSpider: [04.11.2007 19:32]
    Hmm - nagut, ich denke ich kann dir nochmal verzeihen *bussytüte rauch* ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    Einmal editiert, zuletzt von Alina (4. November 2007 um 18:23)

  • So wäre es dann (fast) ultimativ:
    - Eingrenzen der zulässigen Zeichen.
    - Zum nächsten Feld springen, wenn fünf Zeichen drin sind.
    - "OK" geht erst, wenn alle Felder voll sind.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Global $lim = 5
    $mygui = GUICreate("MYGui", 367, 98, 193, 115)
    $Label1 = GUICtrlCreateLabel("Bitte jeweils 5 Zahlen/Buchstaben eintragen.", 0, 0, 366, 17, $SS_CENTER)
    $Input5 = GUICtrlCreateInput("", 24, 32, 57, 21, BitOR($ES_CENTER,$ES_UPPERCASE,$ES_AUTOHSCROLL))
    GUICtrlSetLimit(-1, $lim)
    $Input1 = GUICtrlCreateInput("", 88, 32, 57, 21, BitOR($ES_CENTER,$ES_UPPERCASE,$ES_AUTOHSCROLL))
    GUICtrlSetLimit(-1, $lim)
    $Input2 = GUICtrlCreateInput("", 152, 32, 57, 21, BitOR($ES_CENTER,$ES_UPPERCASE,$ES_AUTOHSCROLL))
    GUICtrlSetLimit(-1, $lim)
    $Input3 = GUICtrlCreateInput("", 216, 32, 57, 21, BitOR($ES_CENTER,$ES_UPPERCASE,$ES_AUTOHSCROLL))
    GUICtrlSetLimit(-1, $lim)
    $Input4 = GUICtrlCreateInput("", 280, 32, 57, 21, BitOR($ES_CENTER,$ES_UPPERCASE,$ES_AUTOHSCROLL))
    GUICtrlSetLimit(-1, $lim)
    $btnok = GUICtrlCreateButton("&Ok", 144, 64, 75, 25, 0)
    GUISetState(@SW_SHOW)

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

    GUIRegisterMsg(0x0111, "WM_COMMAND") ;Wenn 5 Zeichen springe zum nächsten Feld

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

    $_HBlockx = ""
    For $i = 0 to 47 ;Blocke Dez. < 0
    Hotkeyset(Chr($i),"_Nop") ;durch Belegung mit (k)einer Funktion
    $_HBlockx &=Chr($i)
    Next

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

    For $i = 58 to 64 ;Blocke Dez. > 9 <A
    Hotkeyset(Chr($i),"_Nop")
    $_HBlockx &=Chr($i)
    Next

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

    For $i = 91 to 96 ;Blocke Dez. > Z <a
    Hotkeyset(Chr($i),"_Nop")
    $_HBlockx &=Chr($i)
    Next
    For $i = 123 to 255 ;Blocke Dez. > z
    Hotkeyset(Chr($i),"_Nop")
    $_HBlockx &=Chr($i)
    Next

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnok
    EndSwitch
    Wend

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

    Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    $_key = BitShift($wParam, 16)
    $_inp = BitAnd($wParam, 0x0000FFFF)
    Switch $_key
    Case 0x400
    If StringLen(GUICtrlRead($_inp)) = $lim Then GUICtrlSetState($_inp + 1, $GUI_FOCUS)
    EndSwitch
    EndFunc

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

    Func _Nop()
    ;nix
    EndFunc

    [/autoit]


    Gruß
    Westi