Limit möchte nicht arbeiten (GUICtrlSetLimit)

  • Spoiler anzeigen
    [autoit]


    GUICtrlCreateLabel ("Bitte die NLG eintragen", 5, 195, 300, 14)
    $nlg = GUICtrlCreateInput ( "", 5, 115, 200, 15)
    GUICtrlSetLimit(-1, 32,16)
    ;
    ; Auszug aus der Hilfe
    ; GUICtrlSetLimit ( controlID, max [, min] )
    ;
    ; ausprobiert:
    ; GUICtrlSetLimit($nlg, 32,16)
    ; und
    ; GUICtrlSetLimit(-1, 32,16)
    ; und
    ; GUICtrlSetLimit(32,16)

    [/autoit]

    Ich weiß nicht, wieso er die Eingabe nicht mit dem max, min an nimmt.

    Wer weiß da eventuell eine Hilfe?


    LG,
    Crazy-A.

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

    Einmal editiert, zuletzt von Crazy-A (22. Oktober 2008 um 22:59)

  • Hallo BugFix.

    Ich möchte doch ein "GUICtrlCreateInput" eingrenzen und kein "GUICtrlCreateLabel".
    In das Inputfeld sollen minimal 16 Stellen und maximal 32 Stellen stehen, sonst kann man den Button (Weiterbutton) nicht erfolgreich betätigen.

    Ich der Hilfe steht dazu: GUICtrlSetLimit ( controlID, max [, min] )
    Das verstehe ich so, das man eine maximale und eine minimale Länge für eine ControlID festlegen kann.

    Boh, denke ich evtl. total blond? Helf mir mal auf die Sprünge. Aber nicht in meinen Po treten, okay ;)

    LG,
    Crazy-A.

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Hi Alina,
    der min-Wert ist nur für Schieberegler und Updown Felder.
    Du könntest aber die Länge mit StringLen abfragen

  • Hallo Tweaky.

    Okay, das ist eine Aussage. Hast Du irgendwo ein Link im Forum, wo das ausgeführt wird mit Inputfeldern?
    Ich meine hast Du so ein Link im Kopf? So das ich daran versuchen kann die Anwendung zu verstehen.

    LG,
    Crazy-A.

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Hi,
    habe einfach in der deutschen Hilfe nachgeschaut.
    lesen

    EDIT: Oh falsch verstanden. Dies ist der Link wo drinsteht, womit GuictrlsetLimit funktioniert

  • Also bei jedem Input so verfahren:

    Spoiler anzeigen
    [autoit]


    $1_GUI = GuiCreate("NLG", 310, 100)
    GUICtrlCreateLabel ("Bitte die NLG eintragen", 5, 195, 300, 14)
    $nlg = GUICtrlCreateInput ( "", 5, 115, 200, 15)
    $Button_1 = GuiCtrlCreateButton("Weiter", 5, 75, 165, 20)
    $len_1 = StringLen(GuiCtrlRead($nlg))

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

    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop

    Case $msg =$Button_1
    if $len_1 >15 And < 33 then
    $1_GUI = IniWrite(($name) , "werte , "nlg" ,GuiCtrlRead($Input_1))

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

    Case $msg =$Button_2
    if $len_2 >15 And < 33 then
    $2_GUI = IniWrite(($name) , "werte , "nlg" ,GuiCtrlRead($Input_2))

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

    ......

    [/autoit]

    Ist der Wert nicht zwischen 16 und 32, dann soll der Button nicht zu drücken sein und auch nichts in die INI eingetragen werden. Also Pflichtlänge zwischen 16 und 32.

    Boh, ich denke schon wieder total falsch und sehe den einen oder anderen grinsen. Aber ich komme nur auf gerade genanntes.

    LG,
    Crazy-A.

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Habs mal schnell geschrieben :)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    Dim $len_1_alt

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

    $1_GUI = GUICreate("NLG", 310, 100)
    GUICtrlCreateLabel("Bitte die NLG eintragen", 5, 195, 300, 14)
    $nlg = GUICtrlCreateInput("", 5, 20, 200, 15)
    $Button_1 = GUICtrlCreateButton("Weiter", 5, 75, 165, 20)
    GUICtrlSetState($Button_1, $GUI_DISABLE)

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    EndSelect

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

    ;Prüfung, ob die Länge des Inputs passt
    $len_1 = StringLen(GUICtrlRead($nlg))
    If $len_1_alt <> $len_1 Then
    If $len_1 > 15 And $len_1 < 33 Then
    GUICtrlSetState($Button_1, $GUI_ENABLE)
    Else
    GUICtrlSetState($Button_1, $GUI_DIsABLE)
    EndIf
    $len_1_alt = $len_1
    ConsoleWrite($len_1 & @CRLF)
    EndIf
    WEnd

    [/autoit]
  • WOW, habe es verstanden und ist genial !!!

    MERCI & *k'*

    LG,
    Crazy-A.

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • ich hab mal noch eine allgemeine frage zu dem ganzen
    Das Tweakys beispiel ohne Probleme funktioniert ist mir klar nur:
    Gibt es bei inputs, genau wie bei den Comboboxen nicht auch irgendeine Methode mit GUIRegisterMsg?
    Das fände ich mal schön :) Quasi das man dann bei jeder änderung (inhalt) der inputbox etwas ausführen kann
    Ich habe da schon ein bisschen nach gesucht aber wo kriegt man denn sowas raus? Bei der ComboBox stehts in der Hilfe funktioniert auch wunderbar, nur das ganze auf eine Inputbox abzuändern hat bei mir nicht geklappt :(

    Kurz: Selber effekt wie z.b. bei HTML: onChange(funktion) erzeugen mit GUIRegisterMsg

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

    • Offizieller Beitrag

    Mit Xeno's Hilfe habe ich mal das hier programmiert:

    Spoiler anzeigen
    [autoit]


    #include <String.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    Global $inp1, $inp2, $inp3

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

    GUICreate(" My GUI", 320, 120)
    $inp1 = GUICtrlCreateInput("", 10, 5, 300, 20, BitOR($ES_AUTOHSCROLL, $ES_RIGHT))
    $inp2 = GUICtrlCreateInput("", 10, 35, 300, 20, BitOR($ES_AUTOHSCROLL, $ES_RIGHT))
    $inp3 = GUICtrlCreateInput("", 10, 65, 300, 20, BitOR($ES_AUTOHSCROLL, $ES_RIGHT))
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")

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

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

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

    Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
    Local $pos, $stringL, $stringR, $len, $count, $rest
    Local $controlID = BitAND($wParam, 0xFFFF)
    Switch $controlID
    Case $inp2, $inp3
    Local $string = GUICtrlRead($controlID)
    $string = StringRegExpReplace($string, '[^0123456789,]', '')
    $pos = StringInStr($string, ',', 0, -1)
    $stringR = StringMid($string, $pos)
    $stringL = $string
    If $pos Then $stringL = StringLeft($string, $pos - 1)
    $len = StringLen($stringL) - 1
    $count = Int($len / 3)
    $rest = Mod($len, 3)
    If $count > 0 Then
    For $i = 0 To $count - 1
    $stringL = _StringInsert($stringL, '.', $i * 4 + $rest + 1)
    Next
    EndIf
    GUICtrlSetData($controlID, $stringL & $stringR)
    EndSwitch
    EndFunc ;==>MY_WM_COMMAND

    [/autoit]


    Dort werden in den beiden unteren Inputs die Tausenderpunkte während der Eingabe gesetzt.

  • Hallo Oscar & BugFix.

    WOW, das ist was, damit ich wieder was dazu lernen kann.

    Ganz lieben Dank.

    LG,
    Crazy-A.

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • BugFix ,

    und der WM command (funktion) wird immer ausgeführt sobald sich was ändert in der Inputbox? SO EINFACH IST DAS?!!! OHH Man und ich dachte mann muss das dann noch spezifizieren wie in der combobox ($CBN_DROPDOWN) usw :-/

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D