GUICtrlCreateInput Frage

  • hi leute,
    hab da mal ne frage, und vielleicht kann ja jemand helfen.

    kann man ein eingabefeld auf eine bestimmte anzahl von zeichen begrenzen?
    viele von euch kennen das bestimmt auch von ebay. rechts neben dem
    eingabefeld für die artikelbeschreibung steht "noch XX Zeichen verfügbar".
    ist sowas mit autoit realisierbar? also, als beispiel ein eingabefeld "GUICtrlCreateInput"
    das auf 20 zeichen beschränkt ist, daneben ein GUICtrlCreateLabel was bei leerem input
    "noch 20 zeichen verfügbar" anzeigt und dann bei jedem eingegebenen zeichen
    herunterzählt. wenn alle 20 zeichen eingegeben sind soll das eingabefeld keine zeichen
    mehr annehmen können, ausser die löschtaste (<--) natürlich.

    wäre für tips und lösungsvorschläge sehr dankbar

    gruß diggidie

    Einmal editiert, zuletzt von Diggidie (25. Juli 2009 um 21:11)

  • natürlich ist das möglich ... :

    [autoit]

    GUICtrlSetLimit

    [/autoit]


    Den Rest müssteste schon alleine hinbekommen :P

  • danke, da hätt ich auch selber drauf kommen können, typisches
    anfängerverhalten. trotzdem erschließt sich mir noch nicht
    wie ich den zähler realisieren kann, tipp wäre hilfreich.

    • Offizieller Beitrag

    Mit GuiRegisterMsg kann man sowas realisieren:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    GUICreate('test', 400, 300)
    $hInput = GUICtrlCreateInput('', 10, 10, 280, 20)
    GUICtrlSetLimit(-1, 20)
    $hCount = GUICtrlCreateLabel('20', 300, 12, 60, 20)
    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)
    $nID = BitAND($wParam, 0x0000FFFF)
    If $nID = $hInput Then GUICtrlSetData($hCount, 20 - StringLen(GUICtrlRead($hInput)))
    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_COMMAND

    [/autoit]