#include <GuiComboBox.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Debug_CB = False ; Проверяет ClassName передаваемый в ComboBox/ComboBoxEx функции. Установите True и используйте дескриптор от другого элемента, чтобы увидеть как это работает
Global $hCombo
_Main()
Func _Main()
Local $msg, $Combo1, $Combo2, $hGUI, $add, $add_set, $insert, $clear, $close, $index, $read, $setsel, $count, $select, $find_string, $del_item, $tmp, $sList
$sList = "Анапа|Алма-ата|Белгород|Братск|Бийск|Воронеж|Волгоград|Владимир|Грозный|Геленджик|Дивногорск|Донецк|Елабуга|Енисейск|Златоуст|Зима|Игарка|Ижевск|Иваново|Иркутск|Калуга|Кемерово|Киров|Ковров|Курск|Липецк|Магадан|Москва|Мурманск|Нальчик|Находка|Норильск|Новгород|Омск|Орел|Оренбург|Печора|Пермь|Рыбинск|Сочи|Уфа|Ярославль"
; Создаёт GUI
GUICreate("Авто-заполнение", 400, 296)
$hCombo = GUICtrlCreateCombo("", 2, 2, 396, 296)
GUICtrlSetData(-1, $sList , "Анапа") ; добавляет другие пункты и устанавливает новый по умолчанию
GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 370, 0) ; Ширина выпадающего списка
GUISetState()
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
$ex = MsgBox (4, "Выход", "Хотите выйти?")
If $ex = 6 Then ExitLoop
Case $hCombo
EndSwitch
WEnd
GUIDelete()
EndFunc ;==>_Main
Func _Edit_Changed()
_GUICtrlComboBox_AutoComplete($hCombo)
EndFunc ;==>_Edit_Changed
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg
Local $hWndFrom, $iIDFrom, $iCode, $hWndCombo
If Not IsHWnd($hCombo) Then $hWndCombo = GUICtrlGetHandle($hCombo)
$hWndFrom = $ilParam
$iIDFrom = BitAND($iwParam, 0xFFFF) ; младшее слово
$iCode = BitShift($iwParam, 16) ; старшее слово
Switch $hWndFrom
Case $hCombo, $hWndCombo
Switch $iCode
Case $CBN_CLOSEUP ; Высылается, когда выпадающий список был закрыт
; Нет возвращаемых значений
Case $CBN_DBLCLK ; Высылается, когда пользователь сделал двойной клик на строке в списке ComboBox
; Нет возвращаемых значений
Case $CBN_DROPDOWN ; Высылается, когда выпадающий список ComboBox'а был развёрнут
; Нет возвращаемых значений
Case $CBN_EDITCHANGE ; Высылается после того, как пользователь выполнил действие, которое может изменить текст в поле ввода ComboBox'а
_Edit_Changed()
; Нет возвращаемых значений
Case $CBN_EDITUPDATE ; Высылается, когда поле ввода ComboBox'а отображает изменённый текст
; Нет возвращаемых значений
Case $CBN_ERRSPACE ; Высылается, когда ComboBox не может выделить достаточно памяти для выполнения определённого запроса
; Нет возвращаемых значений
Case $CBN_KILLFOCUS ; Высылается, когда ComboBox теряет фокус
; Нет возвращаемых значений
Case $CBN_SELCHANGE ; Высылается, когда пользователь изменяет текущий выбор из списка ComboBox
; Нет возвращаемых значений
Case $CBN_SELENDCANCEL ; Высылается, когда пользователь раскрывает список, но ничего не выбирает, кликая другой элемент окна или просто закрывая список.
; Нет возвращаемых значений
Case $CBN_SELENDOK ; Высылается, когда пользователь выбирает пункт списка, или выбирает пункт и затем закрывает список
; Нет возвращаемых значений
Case $CBN_SETFOCUS ; Высылается, когда ComboBox получил фокус
; Нет возвращаемых значений
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND