Jump to content

Search the Community

Showing results for tags '_GUICtrlComboBox_AutoComplete'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General
    • Announcements and Site News
    • Administration
  • AutoIt v3
    • AutoIt Help and Support
    • AutoIt Technical Discussion
    • AutoIt Example Scripts
  • Scripting and Development
    • Developer General Discussion
    • Language Specific Discussion
  • IT Administration
    • Operating System Deployment
    • Windows Client
    • Windows Server
    • Office

Categories

  • AutoIt Team
    • Beta
    • MVP
  • AutoIt
    • Automation
    • Databases and web connections
    • Data compression
    • Encryption and hash
    • Games
    • GUI Additions
    • Hardware
    • Information gathering
    • Internet protocol suite
    • Maths
    • Media
    • PDF
    • Security
    • Social Media and other Website API
    • Windows
  • Scripting and Development
  • IT Administration
    • Operating System Deployment
    • Windows Client
    • Windows Server
    • Office

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Member Title


Location


WWW


Interests

Found 2 results

  1. I was playing around with _GUICtrlComboBox_AutoComplete example code and wanted to test using the enter key in the combobox. I added an accelerator key to catch the enter key but it wasn't being picked up so I tried putting a sleep in GUIGetMsg loop and that worked but then when you click on the X close window button it isn't picked up. If I reduce the pause in the loop it get more responsive for closing the window but misses some of the enter key presses. I have an alternative using _IsPressed which works but I like the idea of the accelerator key just working in the one window. I'd like to understand why there isn't a balance between the accelerator key, the GUIRegisterMsg, and the close window. In my example you can see that when you press the enter key it picks up whats in the edit box and writes it and a count of how many times you pressed enter to the console and puts a tooltip up. But if you try to close the window clicking on the X or using Ctrl-F4 it usually doesn't work. Using the drop down menu on the left and choosing close works pretty well. If you comment out the Sleep(100) line in the GuiGetMsg loop you pick up some of the enter keys but often miss them. On the other hand closing the window works as expected. Thanks for your consideration. ;Auto complete combobox #include <GuiComboBox.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include<array.au3> #include<misc.au3> Global $g_idCombo Example() Func Example() ; Create GUI GUICreate("ComboBox Auto Complete", 200, 25) $g_idCombo = GUICtrlCreateCombo("", 2, 2, 196, 300) $myEnter = GUICtrlCreateDummy() $myEsc = GUICtrlCreateDummy() Global $iCnt = 0 ;Set GUIAccelerators to capture Enter key ; Local $aAcc[1][2] = [["{Enter}", $myEnter]] Local $aAcc[2][2] = [["{Enter}", $myEnter],["{Esc}", $myEsc]] GUISetAccelerators($aAcc) GUISetState(@SW_SHOW) ; Add files and strings and sort ; You could use InsertString at 0 index instead of AddString to see most recent first additions. _GUICtrlComboBox_BeginUpdate($g_idCombo) _GUICtrlComboBox_AddDir($g_idCombo, @WindowsDir & "\*.exe") Global $aStrings[4] = ["Rock","Paper","Scissors","Rubber"] for $i = 0 to 3 _GUICtrlComboBox_AddString($g_idCombo, $aStrings[$i]) Next $aStrings = _GUICtrlComboBox_GetListArray($g_idCombo) _ArraySort($aStrings) _GUICtrlComboBox_ResetContent($g_idCombo) for $i = 0 to UBound($aStrings) -1 ;ConsoleWrite($aStrings[$i] & @CRLF) _GUICtrlComboBox_AddString($g_idCombo, $aStrings[$i]) Next _GUICtrlComboBox_EndUpdate($g_idCombo) GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") ; Loop until the user exits. Do Sleep(100) ;<----- helps get enter key but hurts using close window button X Switch GUIGetMsg() Case $myEnter $iCnt +=1 $sCtrlRead = GUICtrlRead($g_idCombo) ConsoleWrite("Entered " & $iCnt & " " & $sCtrlRead & @CRLF) ToolTip("Entered " & $iCnt & " " & $sCtrlRead,10,10) Case $myEsc GUICtrlSetData($g_idCombo,"Set") ;~ ;GUIDelete() EndSwitch ;Alternative to Accelerator Keys ;~ if chk_key("0d") then ;~ $iCnt +=1 ;~ $sCtrlRead = GUICtrlRead($g_idCombo) ;~ ConsoleWrite("Press-Entered " & $iCnt & " " & $sCtrlRead & @CRLF) ;~ EndIf ;~ if chk_key("1b") then ;~ ConsoleWrite("Esc" & @CRLF) ;~ Exit ;~ EndIf ;and WinActive("ComboBox Auto Complete") Until GUIGetMsg() = $GUI_EVENT_CLOSE GUIDelete() EndFunc ;==>Example func chk_key($sK) ; 0d,1b Enter, Esc if _IsPressed($sK) and WinActive("ComboBox Auto Complete") then While _IsPressed($sK) Sleep(200) WEnd return True EndIf return False EndFunc Func _Edit_Changed() _GUICtrlComboBox_AutoComplete($g_idCombo) EndFunc ;==>_Edit_Changed Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam) #forceref $hWnd, $iMsg Local $hWndFrom, $iIDFrom, $iCode, $hWndCombo If Not IsHWnd($g_idCombo) Then $hWndCombo = GUICtrlGetHandle($g_idCombo) $hWndFrom = $lParam $iIDFrom = BitAND($wParam, 0xFFFF) ; Low Word $iCode = BitShift($wParam, 16) ; Hi Word Switch $hWndFrom Case $g_idCombo, $hWndCombo Switch $iCode Case $CBN_CLOSEUP ; Sent when the list box of a combo box has been closed _DebugPrint("$CBN_CLOSEUP" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode) ; no return value Case $CBN_DBLCLK ; Sent when the user double-clicks a string in the list box of a combo box _DebugPrint("$CBN_DBLCLK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode) ; no return value Case $CBN_DROPDOWN ; Sent when the list box of a combo box is about to be made visible _DebugPrint("$CBN_DROPDOWN" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode) ; no return value Case $CBN_EDITCHANGE ; Sent after the user has taken an action that may have altered the text in the edit control portion of a combo box _DebugPrint("$CBN_EDITCHANGE" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode) _Edit_Changed() ; no return value Case $CBN_EDITUPDATE ; Sent when the edit control portion of a combo box is about to display altered text _DebugPrint("$CBN_EDITUPDATE" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode) ; no return value Case $CBN_ERRSPACE ; Sent when a combo box cannot allocate enough memory to meet a specific request _DebugPrint("$CBN_ERRSPACE" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode) ; no return value Case $CBN_KILLFOCUS ; Sent when a combo box loses the keyboard focus _DebugPrint("$CBN_KILLFOCUS" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode) ; no return value Case $CBN_SELCHANGE ; Sent when the user changes the current selection in the list box of a combo box _DebugPrint("$CBN_SELCHANGE" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode) ; no return value Case $CBN_SELENDCANCEL ; Sent when the user selects an item, but then selects another control or closes the dialog box _DebugPrint("$CBN_SELENDCANCEL" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode) ; no return value Case $CBN_SELENDOK ; Sent when the user selects a list item, or selects an item and then closes the list _DebugPrint("$CBN_SELENDOK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode) ; no return value Case $CBN_SETFOCUS ; Sent when a combo box receives the keyboard focus _DebugPrint("$CBN_SETFOCUS" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode) ; no return value EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_COMMAND Func _DebugPrint($s_Text, $sLine = @ScriptLineNumber) ConsoleWrite( _ "!===========================================================" & @CRLF & _ "+======================================================" & @CRLF & _ "-->Line(" & StringFormat("%04d", $sLine) & "):" & @TAB & $s_Text & @CRLF & _ "+======================================================" & @CRLF) EndFunc ;==>_DebugPrint auto_complete combobox.au3
  2. Is it possible to have more than one combobox using _GUICtrlComboBox_AutoComplete with separate item lists? Say I wanted a GUI with two combo's, one with fruit (apple|orange|tomato) and one with vegetables (celery|Turnip|carrot) and wanted both of them to autocomplete. Is this possible? I like the way the _GUICtrlComboBox_AutoComplete example works, but I am having difficulties understanding the code :/ http://www.autoitscript.com/autoit3/docs/libfunctions/_GUICtrlComboBox_AutoComplete.htm my first attempt: #include <GuiComboBox.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> $Debug_CB = False ; Check ClassName being passed to ComboBox/ComboBoxEx functions, set to True and use a handle to another control to see it work Global $hCombo, $hCombo2 _Main() Func _Main() ; Create GUI GUICreate("ComboBox Auto Complete", 400, 296) $hCombo = GUICtrlCreateCombo("", 2, 2, 396, 296) GUICtrlSetData(-1, "Apple|Orange|Tomatoe") $hCombo2 = GUICtrlCreateCombo("", 2, 42, 396, 296) GUICtrlSetData(-1, "One|Two|Three") GUISetState() ; Add files ;~ _GUICtrlComboBox_BeginUpdate($hCombo) ;~ _GUICtrlComboBox_AddDir($hCombo, @WindowsDir & "\*.exe") ;~ _GUICtrlComboBox_EndUpdate($hCombo) GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") ; Loop until user exits Do Until GUIGetMsg() = $GUI_EVENT_CLOSE GUIDelete() EndFunc ;==>_Main Func _Edit_Changed($hCombo) _GUICtrlComboBox_AutoComplete($hCombo) EndFunc ;==>_Edit_Changed Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam) #forceref $hWnd, $iMsg Local $hWndFrom, $iIDFrom, $iCode, $hWndCombo, $hWndCombo2 If Not IsHWnd($hCombo) Then $hWndCombo = GUICtrlGetHandle($hCombo) If Not IsHWnd($hCombo2) Then $hWndCombo2 = GUICtrlGetHandle($hCombo2) $hWndFrom = $ilParam $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word $iCode = BitShift($iwParam, 16) ; Hi Word Switch $hWndFrom Case $hCombo, $hWndCombo Switch $iCode Case $CBN_EDITCHANGE ; Sent after the user has taken an action that may have altered the text in the edit control portion of a combo box _Edit_Changed($hCombo) ; no return value EndSwitch Case $hCombo2, $hWndCombo Switch $iCode Case $CBN_EDITCHANGE ; Sent after the user has taken an action that may have altered the text in the edit control portion of a combo box _Edit_Changed($hCombo) ; no return value EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_COMMAND Func _DebugPrint($s_text, $line = @ScriptLineNumber) ConsoleWrite( _ "!===========================================================" & @LF & _ "+======================================================" & @LF & _ "-->Line(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _ "+======================================================" & @LF) EndFunc ;==>_DebugPrint there must be an easier way..
×
×
  • Create New...