Autovervollständigung

  • Möchte gerne diese Autovervollständigung zu laufen bekommen mit 718 Wörtern als Vorgabe, die ich einer Exceltabelle stehen. Nur mir normal einlesen klappt das nicht. Wo sind unsere Excel-Spezialisten. ;)
    .
    Danke schon jetzt.

    Problemerklärung im Script: siehe Zeile 19/20

    Spoiler anzeigen
    [autoit]


    #include-once
    #include 'PredictText.au3'
    #include <GUIConstants.au3>
    #include <EditConstants.au3>

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

    Local $hGUI = GUICreate('Autovervollständigung', 500, 70)
    Local $_Min = 5
    Local $_MaxArraySize = 10

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

    GUICtrlCreateLabel("Bitte Suchbegriff eingeben", 10, 10, 480, 15)
    Local $Input1 = GUICtrlCreateInput('', 10, 30, 480, 30)

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

    Local $nEnter = GUICtrlCreateDummy()
    GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')

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

    Local $aAccelKeys[1][2] = [["{ENTER}", $nEnter]]
    GUISetAccelerators($aAccelKeys)

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

    ; hier 718 Wörter aus A2 - A720 auswählen aus Exceldatei @ScriptDir & "\test.xlsx"
    ; Global $_Words1[718] = [Inhalt aus A2 bis A720 aus der Excel-Datei test.xlsx]
    Global $_Words1[3] = ['John', 'Petra', 'Peter']
    _RegisterListingNewWords(Default, $_Min)

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

    GUISetState()

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

    Local $iGUIGetMsg
    While 1
    $iGUIGetMsg = GUIGetMsg()
    Switch $iGUIGetMsg
    Case $GUI_EVENT_CLOSE
    _UnregisterPrediction()
    ExitLoop
    Case $nEnter
    $hFocus = _WinAPI_GetFocus()
    Switch $hFocus
    Case GUICtrlGetHandle($Input1)
    _GUICtrlEdit_SetSel($hFocus, -1, -1)
    EndSwitch
    EndSwitch
    WEnd

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

    Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
    If _WinAPI_HiWord($wParam) = $EN_SETFOCUS Then

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

    Switch $lParam
    Case GUICtrlGetHandle($Input1)
    _RegisterPrediction($lParam, $_Words1)
    EndSwitch

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

    EndIf

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

    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Ich drehe im Kreis oder auf deutsch: ich drehe am Rad !!!

    Habe die Autovervollständigung in der GUI, so wie ich es haben möchte. GUI (Suchabfrage) öffnet. Nun möchte ich die Begriffe als Autovervollständigung aus Excel auslesen. Das funktioniert auch und wird im ArrayDisplay auch richtig angezeigt (habe ich derzeitig deaktiviert die Ausgabe). NUn das Problem: ich bekomme es nicht hin, das die Begriffe vom Arry in die Inputbox aus Autovervollständigung angezeigt wird und wenn man den Begriff danach mit ENTER bestätigt, das der ausgewählte Begriff weiter genutzt werden kann (Consolenausgabe reich, da ich es dann weiter selber versuchen möchte).
    .
    Kann mir da jemand helfen ???

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <EditConstants.au3>
    #include <Excel.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiEdit.au3>
    #include <MsgBoxConstants.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include-once
    #include 'PredictText.au3'
    #include <GUIConstants.au3>
    #include <EditConstants.au3>

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

    Local $hGUI = GUICreate('Autovervollständigung', 500, 70)
    Local $_Min = 5
    Local $_MaxArraySize = 10

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

    GUICtrlCreateLabel("Bitte Suchbegriff eingeben", 10, 10, 480, 15)
    Local $Input1 = GUICtrlCreateInput('', 10, 30, 480, 30)

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

    Local $nEnter = GUICtrlCreateDummy()
    GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')

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

    Local $aAccelKeys[1][2] = [["{ENTER}", $nEnter]]
    GUISetAccelerators($aAccelKeys)

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

    ; Excel-Bereich Start
    Global $sFilePath = @ScriptDir & "\test.xlsx"
    Local $oExcel = _Excel_Open(False, False, True, True, True)

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

    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

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

    Local $oWorkbook = _Excel_BookOpen($oExcel, $sFilePath)
    If @error Then
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example", "Dateiname falsch oder sie müssen nachfolgende Datei schließen '" & $sFilePath); & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
    EndIf

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

    ; Einlesen von A2:A720
    Local $bResult = _Excel_RangeRead($oWorkbook, Default, "A2:A720", 2)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "11Excel UDF: _Excel_RangeRead", "Error reading from workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

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

    ;ArrayDisplay: Test ob richtige Spalte gelesen wird und wird sie auch komplett
    ;_ArrayDisplay($bResult, "22Excel UDF: _Excel_RangeRead - Cells A2:A720")
    ; Ende Einlesen

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

    Global $_Words1[3] = [$bResult]
    _RegisterListingNewWords(Default, $_Min)

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

    GUISetState()

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

    Local $iGUIGetMsg
    While 1
    $iGUIGetMsg = GUIGetMsg()
    Switch $iGUIGetMsg
    Case $GUI_EVENT_CLOSE

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

    ExitLoop
    Case $nEnter
    $hFocus = _WinAPI_GetFocus()
    Switch $hFocus
    Case GUICtrlGetHandle($Input1)
    _GUICtrlEdit_SetSel($hFocus, -1, -1)
    EndSwitch
    EndSwitch
    WEnd

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

    Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
    If _WinAPI_HiWord($wParam) = $EN_SETFOCUS Then

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

    Switch $lParam
    Case GUICtrlGetHandle($Input1)
    _RegisterPrediction($lParam, $_Words1)
    EndSwitch

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

    EndIf

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

    Return $GUI_RUNDEFMSG
    EndFunc

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

    _Excel_BookClose($oWorkbook)
    _Excel_Close($oExcel, False)

    [/autoit]

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Denke ich kann dir helfen.
    Was du mit

    [autoit]

    Global $_Words1[3] = [$bResult]

    [/autoit]


    bezwecken willst weiße ich nicht.

    Ich denke es muß

    [autoit]

    _RegisterPrediction($lParam, $bResult)

    [/autoit]


    statt

    [autoit]

    _RegisterPrediction($lParam, $_Words1)

    [/autoit]


    heißen.

    PS: Wusste gar nicht, dass dies in AutoIt möglich ist. Werde ich mal archivieren, vielleicht kann ich es mal gebrauchen.

  • Okay, bin einen Schritt weiter.

    Nun bin ich soweit, das wenn ich tippe, mir ein Begrifft anzeigt. Also Engelmann, den ersten den erfindet und nicht, wenn ich "Engel" eintippen, das er mir untereinander oder durch Scollen die anderen Begriffe wie z. B. Engelfrau, Engelshaar, usw.
    Dazu kommt, das, wenn ich mich für Engelsmann entschieden habe und ENTER drücke, das er mir dann Engelsmann als Variable ausgibt, die ich dann weiter verarbeiten / nutzen kann.
    Aber schon mal ein Schritt weiter und meinen DANK !!!

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <EditConstants.au3>
    #include <Excel.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiEdit.au3>
    #include <MsgBoxConstants.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include-once
    #include 'PredictText.au3'
    #include <GUIConstants.au3>
    #include <EditConstants.au3>

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

    Local $hGUI = GUICreate('Autovervollständigung', 500, 70)
    Local $_Min = 5
    Local $_MaxArraySize = 10

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

    GUICtrlCreateLabel("Bitte Suchbegriff eingeben", 10, 10, 480, 15)
    Local $Input1 = GUICtrlCreateInput('', 10, 30, 480, 30)

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

    Local $nEnter = GUICtrlCreateDummy()
    GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')

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

    Local $aAccelKeys[1][2] = [["{ENTER}", $nEnter]]
    GUISetAccelerators($aAccelKeys)

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

    ; Excel-Bereich Start
    Global $sFilePath = @ScriptDir & "\test.xlsx"
    Local $oExcel = _Excel_Open(False, False, True, True, True)

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

    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

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

    Local $oWorkbook = _Excel_BookOpen($oExcel, $sFilePath)
    If @error Then
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example", "Dateiname falsch oder sie müssen nachfolgende Datei schließen '" & $sFilePath); & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
    EndIf

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

    ; Einlesen von A2:A743
    Local $bResult = _Excel_RangeRead($oWorkbook, Default, "A2:A743", 2)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "11Excel UDF: _Excel_RangeRead", "Error reading from workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

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

    ;ArrayDisplay: Test ob richtige Spalte gelesen wird und wird sie auch komplett
    ;_ArrayDisplay($bResult, "22Excel UDF: _Excel_RangeRead - Cells A2:A743")
    ; Ende Einlesen

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

    _RegisterListingNewWords(Default, $_Min)

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

    GUISetState()

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

    Local $iGUIGetMsg
    While 1
    $iGUIGetMsg = GUIGetMsg()
    Switch $iGUIGetMsg
    Case $GUI_EVENT_CLOSE

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

    ExitLoop
    Case $nEnter
    $hFocus = _WinAPI_GetFocus()
    Switch $hFocus
    Case GUICtrlGetHandle($Input1)
    _GUICtrlEdit_SetSel($hFocus, -1, -1)
    EndSwitch
    EndSwitch
    WEnd

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

    Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
    If _WinAPI_HiWord($wParam) = $EN_SETFOCUS Then

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

    Switch $lParam
    Case GUICtrlGetHandle($Input1)
    _RegisterPrediction($lParam, $bResult)
    EndSwitch

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

    EndIf

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

    Return $GUI_RUNDEFMSG
    EndFunc

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

    _Excel_BookClose($oWorkbook)

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

    _Excel_Close($oExcel, False)

    [/autoit]


    *) der Wert "A2:A743" (roter Bereich) erhöht sich gerade, weil ich Daten dort erfasse.

    Tweaky Du kanntest die Autovervollständigung noch nicht? Also ich hatte das schon ein paar mal gelesen, aber habe es noch nie zum laufen bekommen. Wenn es dieses mal funktioniert, werde ich damit wohl mehr arbeiten.

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Okay, Auswahlthema abgeharkt. DANKE

    Wie übernehme ich nun den Begriff zur weiteren Verwendung?
    Es soll ja keinen Button geben, sondern der "Begriff" in eine Variable ausgeben, so das ich damit weiter arbeiten kann.

    Dezeitiges Script:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <EditConstants.au3>
    #include <Excel.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiEdit.au3>
    #include <MsgBoxConstants.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include-once
    #include 'PredictText.au3'
    #include <GUIConstants.au3>
    #include <EditConstants.au3>

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

    Local $hGUI = GUICreate('Autovervollständigung', 500, 70)
    Local $_Min = 5
    Local $_MaxArraySize = 10

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

    GUICtrlCreateLabel("Bitte Suchbegriff eingeben", 10, 10, 480, 15)
    Local $Input1 = GUICtrlCreateInput('', 10, 30, 480, 30)

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

    Local $nEnter = GUICtrlCreateDummy()
    GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')

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

    Local $aAccelKeys[1][2] = [["{ENTER}", $nEnter]]
    GUISetAccelerators($aAccelKeys)

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

    ; Excel-Bereich Start
    Global $sFilePath = @ScriptDir & "\test.xlsx"
    Local $oExcel = _Excel_Open(False, False, True, True, True)

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

    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

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

    Local $oWorkbook = _Excel_BookOpen($oExcel, $sFilePath)
    If @error Then
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example", "Dateiname falsch oder sie müssen nachfolgende Datei schließen '" & $sFilePath); & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
    EndIf

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

    ; Einlesen von A2:A743
    Local $bResult = _Excel_RangeRead($oWorkbook, Default, "A2:A743", 2)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "11Excel UDF: _Excel_RangeRead", "Error reading from workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

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

    ;ArrayDisplay: Test ob richtige Spalte gelesen wird und wird sie auch komplett
    ;_ArrayDisplay($bResult, "22Excel UDF: _Excel_RangeRead - Cells A2:A743")
    ; Ende Einlesen

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

    _RegisterListingNewWords(Default, $_Min)

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

    GUISetState()

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

    Local $iGUIGetMsg
    While 1
    $iGUIGetMsg = GUIGetMsg()
    Switch $iGUIGetMsg
    Case $GUI_EVENT_CLOSE

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

    ExitLoop
    Case $nEnter
    $hFocus = _WinAPI_GetFocus()
    Switch $hFocus
    Case GUICtrlGetHandle($Input1)
    _GUICtrlEdit_SetSel($hFocus, -1, -1)
    EndSwitch
    EndSwitch
    WEnd

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

    Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
    If _WinAPI_HiWord($wParam) = $EN_SETFOCUS Then

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

    Switch $lParam
    Case GUICtrlGetHandle($Input1)
    _RegisterPrediction($lParam, $bResult, 0, 0, 0, 1)
    EndSwitch

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

    EndIf

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

    Return $GUI_RUNDEFMSG
    EndFunc

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

    _Excel_BookClose($oWorkbook)

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

    _Excel_Close($oExcel, False)

    [/autoit]

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • jetzt aber, so schwer ist das doch nicht

    [autoit]

    Case $nEnter
    ConsoleWrite(GUICtrlRead($Input1) & @CRLF)

    [/autoit]
  • Ah, das sieht doch schon mal gut aus.
    Nun schaue ich mal selber weiter.

    DANKE ür Deine Hilfe.

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <EditConstants.au3>
    #include <Excel.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiEdit.au3>
    #include <MsgBoxConstants.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include-once
    #include 'PredictText.au3'
    #include <GUIConstants.au3>
    #include <EditConstants.au3>

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

    Local $hGUI = GUICreate('Autovervollständigung', 220, 70)
    Local $_Min = 5
    Local $_MaxArraySize = 10

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

    GUICtrlCreateLabel("Bitte Suchbegriff eingeben", 10, 10, 200, 15)
    Local $Input1 = GUICtrlCreateInput('', 10, 30, 200, 30)

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

    Local $nEnter = GUICtrlCreateDummy()
    GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')

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

    Local $aAccelKeys[1][2] = [["{ENTER}", $nEnter]]
    GUISetAccelerators($aAccelKeys)

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

    ; Excel-Bereich Start
    Global $sFilePath = @ScriptDir & "\test.xlsx"
    Local $oExcel = _Excel_Open(False, False, True, True, True)

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

    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

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

    Local $oWorkbook = _Excel_BookOpen($oExcel, $sFilePath)
    If @error Then
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example", "Dateiname falsch oder sie müssen nachfolgende Datei schließen '" & $sFilePath); & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
    EndIf

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

    ; Einlesen von A2:A743
    Local $bResult = _Excel_RangeRead($oWorkbook, Default, "A2:A743", 2)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "11Excel UDF: _Excel_RangeRead", "Error reading from workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

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

    ;ArrayDisplay: Test ob richtige Spalte gelesen wird und wird sie auch komplett
    ;_ArrayDisplay($bResult, "22Excel UDF: _Excel_RangeRead - Cells A2:A743")
    ; Ende Einlesen

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

    ;_RegisterListingNewWords(Default, $_Min)

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

    GUISetState()

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

    Local $iGUIGetMsg
    While 1
    $iGUIGetMsg = GUIGetMsg()
    Switch $iGUIGetMsg
    Case $GUI_EVENT_CLOSE
    ExitLoop

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

    Case $nEnter
    $hFocus = _WinAPI_GetFocus()
    Switch $hFocus
    Case GUICtrlGetHandle($Input1)
    _GUICtrlEdit_SetSel($hFocus, 250, 10)
    ; meine Idee / mein Beispiel

    $var_47 = GUICtrlRead($Input1)
    MsgBox(64,"",$var_47)

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

    ;Tweaky
    ConsoleWrite(GUICtrlRead($Input1) & @CRLF)
    EndSwitch
    EndSwitch
    WEnd

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

    Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
    If _WinAPI_HiWord($wParam) = $EN_SETFOCUS Then

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

    Switch $lParam
    Case GUICtrlGetHandle($Input1)
    _RegisterPrediction($lParam, $bResult, 0, 0, 0, 1)
    EndSwitch

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

    EndIf

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

    Return $GUI_RUNDEFMSG
    EndFunc

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

    _Excel_BookClose($oWorkbook)

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

    _Excel_Close($oExcel, False)

    [/autoit]

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    Einmal editiert, zuletzt von Alina (23. Dezember 2014 um 19:03)

  • Wieso macht die Autovervollständigung Probleme?

    Script:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <EditConstants.au3>
    #include <Excel.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiEdit.au3>
    #include <MsgBoxConstants.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include-once
    #include 'PredictText.au3'
    #include <GUIConstants.au3>
    #include <EditConstants.au3>

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

    Local $hGUI = GUICreate('Autovervollständigung', 220, 70)
    Local $_Min = 5
    Local $_MaxArraySize = 10

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

    GUICtrlCreateLabel("Bitte Suchbegriff eingeben", 10, 10, 200, 15)
    Local $Input1 = GUICtrlCreateInput('', 10, 30, 200, 30)

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

    Local $nEnter = GUICtrlCreateDummy()
    GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')

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

    Local $aAccelKeys[1][2] = [["{ENTER}", $nEnter]]
    GUISetAccelerators($aAccelKeys)

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

    ; Excel-Bereich Start
    Global $sFilePath = @ScriptDir & "\test.xlsx"
    Local $oExcel = _Excel_Open(False, False, True, True, True)

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

    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

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

    Local $oWorkbook = _Excel_BookOpen($oExcel, $sFilePath)
    If @error Then
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example", "Dateiname falsch oder sie müssen nachfolgende Datei schließen '" & $sFilePath); & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
    EndIf

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

    ; Einlesen von A2:A743
    Local $bResult = _Excel_RangeRead($oWorkbook, Default, "A2:A743", 2)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "11Excel UDF: _Excel_RangeRead", "Error reading from workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

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

    ;ArrayDisplay: Test ob richtige Spalte gelesen wird und wird sie auch komplett
    ;_ArrayDisplay($bResult, "22Excel UDF: _Excel_RangeRead - Cells A2:A743")
    ; Ende Einlesen

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

    ;_RegisterListingNewWords(Default, $_Min)

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

    GUISetState()

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

    Local $iGUIGetMsg
    While 1
    $iGUIGetMsg = GUIGetMsg()
    Switch $iGUIGetMsg
    Case $GUI_EVENT_CLOSE
    ExitLoop

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

    Case $nEnter
    $hFocus = _WinAPI_GetFocus()
    Switch $hFocus
    Case GUICtrlGetHandle($Input1)
    _GUICtrlEdit_SetSel($hFocus, 250, 10)
    ; meine Idee / mein Beispiel

    $var_47 = GUICtrlRead($Input1)
    MsgBox(64,"",$var_47)

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

    EndSwitch
    EndSwitch
    WEnd

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

    Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
    If _WinAPI_HiWord($wParam) = $EN_SETFOCUS Then

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

    Switch $lParam
    Case GUICtrlGetHandle($Input1)
    _RegisterPrediction($lParam, $bResult, 0, 0, 0, 1)
    EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc
    _Excel_BookClose($oWorkbook)
    _Excel_Close($oExcel, False)

    [/autoit]

    Bebe ich einen Namen ein, einen Doppelnamen, dann ist alles okay. Bei einem Namen mit zwei Bindestriche, zeigt er nur die beiden ersten Namen an und den letzten davon ohne die letzten Buchstaben. Was er weg läßt, ist nicht nachvollziehbar. Man kann nicht sagen, er zeigt nur die ersten 15 Stellen an oder so.
    .
    Kann man irgendwo noch was einstellen bei der Autovervollständigung? Wo ist mein Fehler?

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • würde dir gerne helfen, aber ich verstehe leider nicht was du meinst.
    Unterdrücke bitte in deinem Skript mal die Excel-Funktionen und fülle $bResult mit den Namen wo es nicht funktioniert, damit man es 1:1 testen kann.

  • Dein Wunsch ist mir befohlen ;)

    Habe oben mal die Variable eingefügt und Excel alles raus genommen.
    Variable: $bResult = "Pia Wollweber-Kellzer-Sörensen"

    Hier geht es, aber wenn die Excel funktionen dabei sind, zeigt er nur "Pia Wollweber-Kell" an.

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <EditConstants.au3>
    #include <Excel.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiEdit.au3>
    #include <MsgBoxConstants.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include-once
    #include 'PredictText.au3'
    #include <GUIConstants.au3>
    #include <EditConstants.au3>

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

    Local $hGUI = GUICreate('Autovervollständigung', 220, 70)
    Local $_Min = 5
    Local $_MaxArraySize = 10
    $bResult = "Pia Wollweber-Keller-Sörensen"
    GUICtrlCreateLabel("Bitte Suchbegriff eingeben", 10, 10, 200, 15)
    Local $Input1 = GUICtrlCreateInput('', 10, 30, 200, 30)

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

    Local $nEnter = GUICtrlCreateDummy()
    GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')

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

    Local $aAccelKeys[1][2] = [["{ENTER}", $nEnter]]
    GUISetAccelerators($aAccelKeys)

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

    #cs
    ; Excel-Bereich Start
    Global $sFilePath = @ScriptDir & "\test.xlsx"
    Local $oExcel = _Excel_Open(False, False, True, True, True)

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

    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

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

    Local $oWorkbook = _Excel_BookOpen($oExcel, $sFilePath)
    If @error Then
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example", "Dateiname falsch oder sie müssen nachfolgende Datei schließen '" & $sFilePath); & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
    EndIf

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

    ; Einlesen von A2:A743
    Local $bResult = _Excel_RangeRead($oWorkbook, Default, "A2:A743", 2)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "11Excel UDF: _Excel_RangeRead", "Error reading from workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

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

    ;ArrayDisplay: Test ob richtige Spalte gelesen wird und wird sie auch komplett
    ;_ArrayDisplay($bResult, "22Excel UDF: _Excel_RangeRead - Cells A2:A743")
    ; Ende Einlesen
    #ce

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

    ;_RegisterListingNewWords(Default, $_Min)

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

    GUISetState()

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

    Local $iGUIGetMsg
    While 1
    $iGUIGetMsg = GUIGetMsg()
    Switch $iGUIGetMsg
    Case $GUI_EVENT_CLOSE
    ExitLoop

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

    Case $nEnter
    $hFocus = _WinAPI_GetFocus()
    Switch $hFocus
    Case GUICtrlGetHandle($Input1)
    _GUICtrlEdit_SetSel($hFocus, 250, 10)
    ; meine Idee / mein Beispiel

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

    $var_47 = GUICtrlRead($Input1)
    MsgBox(64,"",$var_47)

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

    EndSwitch
    EndSwitch
    WEnd

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

    Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
    If _WinAPI_HiWord($wParam) = $EN_SETFOCUS Then

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

    Switch $lParam
    Case GUICtrlGetHandle($Input1)
    _RegisterPrediction($lParam, $bResult, 0, 0, 0, 1)
    EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc
    ;_Excel_BookClose($oWorkbook)
    ;_Excel_Close($oExcel, False)

    [/autoit]

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    Einmal editiert, zuletzt von Alina (24. Dezember 2014 um 20:42)

  • Kann mir nicht vorstellen, dass es etwas mit Excel zu tun haben soll. Ich glaube einfach dass die Vorschlagsliste mit den Wörtern nicht alles anzeigt.

    Deshalb solltest du am irgendwo am Anfang des Skripts

    [autoit]

    SetSuggestion_Dimensions(500, 150)

    [/autoit]


    einfügen, damit die Vorschlagsliste alles enzeigt (Breite und Höhe selbst bestimmen)

    Wenn du

    [autoit]

    _RegisterPrediction($lParam, $bResult, 0, 0, 0, 1)

    [/autoit]


    in

    [autoit]

    _RegisterPrediction($lParam, $bResult, 0, 1, 0, 1)

    [/autoit]


    änderst, werden dir auch noch Wörter vorgeschlagen wenn du eine Leerstelle eingibst.

  • So, habe o. g. von Dir ausgeführt und bin dennoch nicht zu einer Lösung des Problems gekommen. Habe aber eine Auffälligkeit gefunden. Es liegt am "z".

    Habe mal neue Testdaten erstellt aus dem Du es evtl. besser nachvollziehen kannst.
    Habe mal Straßennamen genommen, da mir keine anderen einfielen.
    Albert-Schweitzer-Hof
    Adolf-Menzel-Weg
    Anna-Hansen-Straße
    Asmus-Jepsen-Weg
    Asmus-Jepzen-Weg
    Das was rot ist, wird nicht in der Vorschau angezeigt. Auffällig ist, das es jedes mal nach einem "z" ist. Nehme ich nur das "z" weg, ist der Fehler behoben.
    Schreibe ich Albert-Schweitz, also das z, hört die Anzeige auch nicht vor dem "z" auf, sondern dann stimmt sie wieder.
    .
    Anlage:
    Eine wahrlos erstellte Beispieldatei mit Straßennamen aus Flensburg in einer Excel-Datei.
    Jedoch als *csv statt wie genutzt *.xlsx.

    Beispiel-Script:

    Spoiler anzeigen
    [autoit]


    #include-once
    #include <Array.au3>
    #include <EditConstants.au3>
    #include <Excel.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiEdit.au3>
    #include <MsgBoxConstants.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include 'PredictText.au3'
    #include <GUIConstants.au3>

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

    Local $hGUI = GUICreate('Geb. und Tel. nach Namen aus Excel-A-Spalte', 220, 70)

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

    GUICtrlCreateLabel("Bitte Suchbegriff eingeben", 10, 10, 200, 15)
    Local $Input1 = GUICtrlCreateInput('', 10, 30, 200, 30)
    SetSuggestion_Dimensions(300, 150)

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

    Local $nEnter = GUICtrlCreateDummy()
    GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')

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

    Local $aAccelKeys[1][2] = [["{ENTER}", $nEnter]]
    GUISetAccelerators($aAccelKeys)

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

    ; Excel-Bereich Start
    Global $sFilePath = @ScriptDir & "\test.xlsx"
    Local $oExcel = _Excel_Open(False, False, True, True, True)

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

    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

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

    Local $oWorkbook = _Excel_BookOpen($oExcel, $sFilePath)
    If @error Then
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example", "Dateiname falsch oder sie müssen nachfolgende Datei schließen '" & $sFilePath); & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
    EndIf

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

    ; Einlesen von A2:A27
    Local $bResult = _Excel_RangeRead($oWorkbook, Default, "A2:A27", 2)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "11Excel UDF: _Excel_RangeRead", "Error reading from workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

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

    GUISetState()

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

    Local $iGUIGetMsg
    While 1
    $iGUIGetMsg = GUIGetMsg()
    Switch $iGUIGetMsg
    Case $GUI_EVENT_CLOSE
    ExitLoop

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

    Case $nEnter
    $hFocus = _WinAPI_GetFocus()
    Switch $hFocus
    Case GUICtrlGetHandle($Input1)
    _GUICtrlEdit_SetSel($hFocus, -1, -1)
    ende()
    EndSwitch
    EndSwitch
    WEnd

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

    Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
    If _WinAPI_HiWord($wParam) = $EN_SETFOCUS Then

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

    Switch $lParam
    Case GUICtrlGetHandle($Input1)
    _RegisterPrediction($lParam, $bResult, 0, 1, 0, 1)
    EndSwitch

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

    EndIf

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

    Return $GUI_RUNDEFMSG
    EndFunc

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

    Func Ende()
    Local $aResult = _Excel_RangeFind($oWorkbook, (GUICtrlRead($Input1)))

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

    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeFind Example 1", "Error searching the range." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

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

    Local $text = StringReplace($aResult[0][2], "$A$", "$B$")
    Local $numreplacements = @extended
    Local $text2 = StringReplace($aResult[0][2], "$A$", "$C$")
    ;Local $numreplacements2 = @extended
    $sCellValue = _Excel_RangeRead($oWorkbook, Default, $text)
    $sCellValue2 = _Excel_RangeRead($oWorkbook, Default, $text2)

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

    MsgBox(0, "Das ist ein Beispiel ", "Telefonnummer: " & @CRLF & $sCellValue & @CRLF & @CRLF & "Geburtsdatum: " & @CRLF & $sCellValue2)

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

    EndFunc

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

    _Excel_BookClose($oWorkbook)
    _Excel_Close($oExcel, False)

    [/autoit]

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    Einmal editiert, zuletzt von Alina (24. Dezember 2014 um 20:44)

  • Hm das ist echt seltsam.
    Ich kann es bei mir nachvollziehen und habe den Fehler nach mehreren Versuchen gefunden.

    Ändere mal in der PredictText.au3

    [autoit]

    Func _GetItemsArr($sSubString)
    Return StringRegExp($___nList, "(?sm" & $___C_Sensitive & ")\" & $___sDelimiter & "(\Q" & StringRegExpReplace($sSubString, "\\", "[\1]") & "\E[^\z\" & $___sDelimiter & "]+)" , 3)
    EndFunc

    [/autoit]


    in

    [autoit]

    Func _GetItemsArr($sSubString)
    Return StringRegExp($___nList, "(?sm" & $___C_Sensitive & ")\" & $___sDelimiter & "(\Q" & StringRegExpReplace($sSubString, "\\", "[\1]") & "\E[^\" & $___sDelimiter & "]+)" , 3)
    EndFunc

    [/autoit]

    Ich habe es nur durch probieren rausgefunden. Da ist mir StringRegExp doch noch zu kompliziert.
    Ich werde es im englischen Forum mal posten.
    http://www.autoitscript.com/forum/topic/14…-udf/?p=1215422

  • Jetzt funktioniert das.
    Das einzige Problem, das ich noch gefunden habe ist eine Mindestlänge die Vorgegeben ist von 5 Zeichen. Hat man nur einen Nachnamen wie "Kuss", findet er nichts. Aber das ist ganz einfach gelöst mit einem Leerzeichen nach Kuss, das ja bei der Autovervollständigung nicht auffällt. ;)

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Sorry, wohl vertippt.
    Sollte zu Bett gehen, was ich nun auch mache.
    .
    DANKE DIR !!!

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Also bei mir funktionieren alle Namen, auch 4stellige.
    Falls du noch Probleme hast dieses einfach mit den Namen posten.