Inputbox

  • ich würde das so machen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    GUICreate('')
    $input = GUICtrlCreateInput("Suchkriterien eingeben ...",10,10,300,20)
    $button = GUICtrlCreateButton("OK",135,40,40,20)
    GUICtrlSetState($button,$GUI_FOCUS)
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
    $nNotifyCode = BitShift($wParam, 16)
    $nID = BitAND($wParam, 0xFFFF)
    Switch $nNotifyCode
    Case 512 ; verläßt Focus

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

    Case 256 ; erhält Focus
    GUICtrlSetData($input,"")
    Case 1024 ; Edit in Focus

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

    EndSwitch
    EndFunc ;==>MY_WM_COMMAND

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    • Offizieller Beitrag

    Eine etwas erweiterte Version:

    Spoiler anzeigen
    [autoit]


    #include <EditConstants.au3>
    #include <ScrollBarConstants.au3>
    #include <GuiEdit.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>

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

    Global $iHit = 0
    Global $sFile = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt', 'InstallDir') & '\include\changelog.txt'

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

    $hGui = GUICreate('Text suchen', 720, 480)

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

    $hEdit = GUICtrlCreateEdit(FileRead($sFile), 10, 10, 700, 440, BitOR($GUI_SS_DEFAULT_EDIT, $ES_READONLY))
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    ControlFocus($hGui, '', $hEdit)
    $hInput = GUICtrlCreateInput('Bitte Suchbegriff eingeben!', 10, 455, 638, 20)
    $hSearch = GUICtrlCreateButton('Suchen', 650, 454, 60, 22)
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, 'MY_WM_COMMAND')

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

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hSearch
    $sText = GUICtrlRead($hEdit)
    $sSearch = GUICtrlRead($hInput)
    $iHit = StringInStr($sText, $sSearch, 0, 1, $iHit + 1)
    If $iHit > 0 Then
    ControlFocus($hGui, '', $hEdit)
    _GUICtrlEdit_SetSel($hEdit, $iHit - 1, $iHit - 1 + StringLen($sSearch))
    _GUICtrlEdit_Scroll($hEdit, $SB_SCROLLCARET)
    GUICtrlSetData($hSearch, 'Weiter...')
    Else
    Beep(400, 100)
    GUICtrlSetData($hSearch, 'Suchen')
    EndIf
    EndSwitch
    WEnd

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

    Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $nID = BitAND($wParam, 0xFFFF)
    If $nID = $hInput And $nNotifyCode = 256 Then
    GUICtrlSetData($hSearch, 'Suchen')
    GUICtrlSetData($hInput, '')
    $iHit = 0
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_COMMAND

    [/autoit]
  • Hi, das lässt sich noch mehr erweitern ;)

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <ScrollBarConstants.au3>
    #include <GuiEdit.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>

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

    Global $iHit = 0, $_EMPTY_TEXT='Bitte Suchbegriff eingeben!', $_OLD_TEXT=""
    Global $sFile = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt', 'InstallDir') & '\include\changelog.txt'

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

    $hGui = GUICreate('Text suchen', 720, 480)

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

    $hEdit = GUICtrlCreateEdit(FileRead($sFile), 10, 10, 700, 440, BitOR($GUI_SS_DEFAULT_EDIT, $ES_READONLY))
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    ControlFocus($hGui, '', $hEdit)
    $hInput = GUICtrlCreateInput($_EMPTY_TEXT, 10, 455, 638, 20)
    $hSearch = GUICtrlCreateButton('Suchen', 650, 454, 60, 22)
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, 'MY_WM_COMMAND')

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

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hSearch
    $sText = GUICtrlRead($hEdit)
    $sSearch = GUICtrlRead($hInput)
    $iHit = StringInStr($sText, $sSearch, 0, 1, $iHit + 1)
    If $iHit > 0 Then
    ControlFocus($hGui, '', $hEdit)
    _GUICtrlEdit_SetSel($hEdit, $iHit - 1, $iHit - 1 + StringLen($sSearch))
    _GUICtrlEdit_Scroll($hEdit, $SB_SCROLLCARET)

    GUICtrlSetData($hSearch, 'Weiter...')
    Else
    Beep(400, 100)
    GUICtrlSetData($hSearch, 'Suchen')
    EndIf
    EndSwitch
    WEnd

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

    Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $nID = BitAND($wParam, 0xFFFF)
    If $nID = $hInput Then
    Switch $nNotifyCode
    Case 256
    If GUICtrlRead($nID) = $_EMPTY_TEXT Then
    GUICtrlSetData($hInput, '')
    EndIf

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

    Case 512
    If GUICtrlRead($nID) = "" Then
    GUICtrlSetData($hSearch, 'Suchen')
    GUICtrlSetData($hInput, $_EMPTY_TEXT)
    $iHit = 0
    EndIf

    Case 1024
    Local $txt = GUICtrlRead($nID)
    If $_OLD_TEXT <> $txt Then
    GUICtrlSetData($hSearch, 'Suchen')
    $iHit = 0
    $_OLD_TEXT = $txt
    EndIf
    EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_COMMAND

    [/autoit]