Verständnisproblem bei INPUT + BUTTON innerhalb einer GUI

  • Hallo zusammen,

    ich habe noch nicht verinnerlicht wie man es erreichen kann, dass eine Texteingabe nicht so ohne weiteres mit "ENTER" übernommen werden kann. Folgendes Skript benutze ich.

    [autoit]


    #Include <Misc.au3>
    #include <GuiConstantsEx.au3>
    #include <GuiStatusBar.au3>

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

    Global $statusbar1, $statusbar1Text

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

    $GUI1 = GuiCreate("", 330, 165, -1, -1)

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

    $dateimenu = GUICtrlCreateMenu("&Datei")
    $beendenitem = GUICtrlCreateMenuitem("&Beenden Alt+F4",$dateimenu)

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

    GUICtrlCreateGroup("Suche in", 5, 5, 100, 60)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("Textsuche", 5, 70, 100, 47)
    $InputSuchstring = GUICtrlCreateInput("", 10, 90, 60, 21)
    GUICtrlSetLimit(-1, 8)
    GUICtrlSetState(-1, $GUI_FOCUS)
    GUICtrlSetTip(-1, "Hier wird ein max. 8-stelliger Suchtext eingegeben; 'Enter'")
    $ButtonSuchstring = GUICtrlCreateButton("?", 75, 90, 25, 21, 0)
    GUICtrlSetTip(-1, "Suche")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("Suchergebnis", 110, 5, 215, 112)
    GUICtrlCreateGroup("", -99, -99, 1, 1)

    $statusbar1 = _GUICtrlStatusBar_Create($GUI1)
    $statusbar1Text = "Status: Eingabe erwartet + 'ENTER'"
    _GUICtrlStatusBar_SetText ($statusbar1, $statusbar1Text)

    GUISetState()

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

    Do
    $msg = GUIGetMsg()

    If $msg = $beendenitem OR $msg = -3 Then
    Exit
    Endif

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

    If _IsPressed("0D") Then
    Send("{TAB}")
    Send("{ENTER}")
    Send("+{TAB}")
    Endif
    Until $msg = $GUI_EVENT_CLOSE

    [/autoit]

    Ich habe die GUI auf das nötigste reduziert. Bisher frage ich über "_IsPressed" ab, ob "ENTER" gedrückt ist, gehe dann per "SEND" zum Button und betätige diesen. Anschließend springt er Cursor wieder zurück ins Eingabefeld - der nächste Wert kann eingegeben werden.

    Problem: Wenn mein Programm offen ist, würde der Send-Befehl auch in anderen Programmen funktionieren. Probiert habe ich dies in Notepad. Ist mehr als unerwünscht.

    Ziel: Nach Eingabe eines Textes soll durch Drücken der ENTER-Taste der Suchtext ausgegeben werden. Ob dazu ein Button erforderlich ist oder nicht, ist egal. Der Cursor sollte sich nach der Suche aber wieder im IMPUT-Feld befinden.

    Einmal editiert, zuletzt von jusuba2009 (21. März 2012 um 16:17) aus folgendem Grund: Problem gelöst

  • Spoiler anzeigen
    [autoit]

    #Include <Misc.au3>
    #include <GuiConstantsEx.au3>
    #include <GuiStatusBar.au3>
    #include <ButtonConstants.au3>

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

    Global $statusbar1, $statusbar1Text

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

    $GUI1 = GuiCreate("", 330, 165, -1, -1)

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

    $dateimenu = GUICtrlCreateMenu("&Datei")
    $beendenitem = GUICtrlCreateMenuitem("&Beenden Alt+F4",$dateimenu)

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

    GUICtrlCreateGroup("Suche in", 5, 5, 100, 60)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("Textsuche", 5, 70, 100, 47)
    $InputSuchstring = GUICtrlCreateInput("", 10, 90, 60, 21)
    GUICtrlSetLimit(-1, 8)
    GUICtrlSetState(-1, $GUI_FOCUS)
    GUICtrlSetTip(-1, "Hier wird ein max. 8-stelliger Suchtext eingegeben; 'Enter'")
    $ButtonSuchstring = GUICtrlCreateButton("?", 75, 90, 25, 21, $BS_DEFPUSHBUTTON)
    GUICtrlSetTip(-1, "Suche")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("Suchergebnis", 110, 5, 215, 112)
    GUICtrlCreateGroup("", -99, -99, 1, 1)

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

    $statusbar1 = _GUICtrlStatusBar_Create($GUI1)
    $statusbar1Text = "Status: Eingabe erwartet + 'ENTER'"
    _GUICtrlStatusBar_SetText ($statusbar1, $statusbar1Text)

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

    GUISetState()

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

    Do
    if GUIGetMsg() =$ButtonSuchstring then MsgBox(0,0, GUICtrlRead($InputSuchstring))
    Until GUIGetMsg() = $GUI_EVENT_CLOSE or GUIGetMsg() = $beendenitem

    [/autoit]

    Evtl. auch hilfreich - http://translation.autoit.de/onlinehilfe/fu…ccelerators.htm

  • Super,

    vielen Dank Euch beiden. Das Auslesen mit "GUICtrlRead($InputSuchstring)" habe ich Euch unterschlagen, weil dies in meinem Gesamtskript integriert ist und auch funktioniert. Der Trick lag in der Zeile 20, in dem der DefPushButton gesetzt wurde. Dadurch kann ich auf das "IsPressed" verzichten.

    $ButtonSuchstring = GUICtrlCreateButton("?", 75, 90, 25, 21, $BS_DEFPUSHBUTTON)

    Abschließend habe ich noch einen "TAB" und einen "SHIFT+TAB" gesendet, damit das INPUT-Feld mit einer Neueingabe gelöscht wird.

    Das war's erst einmal wieder. :D