Editbox nur mit tastatur steuern

  • Hallo,
    ich habe begonnen sone art eingabe aufforderung von windows zu programmieren, und schon wirft sich die nächste frage auf.

    wie programmiere ich die Editbox, dass sie auf bestimmte tastenkombinationen texte usw. reagiert und dem entsprechend einen weiteren Text ausgibt.

    Wenn mir jemand helfen könnte wäre echt edel :)

  • Tasten kannst zu entweder mit HotKeySet oder _IsPressed machen. Texte musst halt immer z.b. nach dem drücken von Enter die Editbox mit GUICtrlRead auswerten.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Die Editbox soll auf Tastenkombinationen reagieren? Dann benutzt du am besten GUISetAccelerators und wenn dein Script nur reagieren soll wenn das Edit aktiv ist, kanst du das ja dann noch prüfen.

    Gruss Shadowigor

    • Offizieller Beitrag

    Ich hab dir mal ein kleines Bsp. erstellt, wie du das übersichtlich lösen kannst:

    Spoiler anzeigen
    [autoit]

    $gui = GUICreate('Test')
    $edit = GUICtrlCreateEdit('', 10, 10, 380, 300)

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

    $Text1 = GUICtrlCreateDummy()
    $Text2 = GUICtrlCreateDummy()
    $Text3 = GUICtrlCreateDummy()

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

    Global $aAccelerators[3][2] = [['^{NUMPAD1}', $Text1],['^{NUMPAD2}', $Text2],['^{NUMPAD3}', $Text3]] ; Strg+Numpad_1 = Text 1 usw.
    GUISetAccelerators($aAccelerators)

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    Exit
    Case $Text1, $Text2, $Text3
    _InsertText($msg)
    EndSwitch
    WEnd

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

    Func _InsertText($_TextID)
    Switch $_TextID
    Case $Text1
    GUICtrlSetData($edit, GUICtrlRead($edit) & _
    "Das ist Textblock 1" & @CRLF)
    Case $Text2
    GUICtrlSetData($edit, GUICtrlRead($edit) & _
    "Das ist Textblock 2" & @CRLF)
    Case $Text3
    GUICtrlSetData($edit, GUICtrlRead($edit) & _
    "Das ist Textblock 3" & @CRLF)
    EndSwitch
    EndFunc

    [/autoit]