#include <GuiComboBox.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
Global $iToolTip, $hForm1, $sComboData, $aArray, $sComboRead, $idCombo, $hCombo, $bCombo, $IdButton
Global $sComboDataDefault = 'Абакан|Азов|Александров|Алексин|Альметьевск|Анапа|Ангарск|Анжеро-Судженск|Апатиты|Арзамас|Армавир|Арсеньев|Артем|Архангельск|Асбест|' & _
'Астрахань|Ачинск|Балаково|Балахна|Балашиха|Балашов|Барнаул|Батайск|Белгород|Белебей|Белово|Белогорск (Амурская область)|Белорецк|Белореченск|Бердск|' & _
'Березники|Березовский (Свердловская область)|Бийск|Биробиджан|Благовещенск (Амурская область)|Бор|Борисоглебск|Боровичи|Братск|Брянск|Бугульма|' & _
'Буденновск|Бузулук|Буйнакск|Великие Луки|Великий Новгород|Верхняя Пышма|Видное|Владивосток|Владикавказ|Владимир|Волгоград|Волгодонск|Волжск|Волжский|' & _
'Вологда|Вольск|Воркута|Воронеж|Воскресенск|Воткинск|Всеволожск|Выборг|Выкса|Вязьма|Гатчина|Геленджик|Георгиевск|Глазов|Горно-Алтайск|Грозный|Губкин|' & _
'Гудермес|Гуково|Гусь-Хрустальный|Дербент|Дзержинск|Димитровград|Дмитров|Долгопрудный|Домодедово|Донской|Дубна|Евпатория|Егорьевск|Ейск|Екатеринбург|' & _
'Елабуга|Елец|Ессентуки|Железногорск (Красноярский край)|Железногорск (Курская область)|Жигулевск|Жуковский|Заречный|Зеленогорск|Зеленодольск|Златоуст|' & _
'Иваново|Ивантеевка|Ижевск|Избербаш|Иркутск|Искитим|Ишим|Ишимбай|Йошкар-Ола|Казань|Калининград|Калуга|Каменск-Уральский|Каменск-Шахтинский|Камышин|Канск|' & _
'Каспийск|Кемерово|Керчь|Кинешма|Кириши|Киров (Кировская область)|Кирово-Чепецк|Киселевск|Кисловодск|Клин|Клинцы|Ковров|Когалым|Коломна|Комсомольск-на-Амуре|' & _
'Копейск|Королев|Кострома|Котлас|Красногорск|Краснодар|Краснокаменск|Краснокамск|Краснотурьинск|Красноярск|Кропоткин|Крымск|Кстово|Кузнецк|Кумертау|Кунгур|' & _
'Курган|Курск|Кызыл|Лабинск|Лениногорск|Ленинск-Кузнецкий|Лесосибирск|Липецк|Лиски|Лобня|Лысьва|Лыткарино|Люберцы|Магадан|Магнитогорск|Майкоп|Махачкала|' & _
'Междуреченск|Мелеуз|Миасс|Минеральные Воды|Минусинск|Михайловка|Михайловск (Ставропольский край)|Мичуринск|Москва|Мурманск|Муром|Мытищи|Набережные Челны|' & _
'Назарово|Назрань|Нальчик|Наро-Фоминск|Находка|Невинномысск|Нерюнгри|Нефтекамск|Нефтеюганск|Нижневартовск|Нижнекамск|Нижний Новгород|Нижний Тагил|Новоалтайск|' & _
'Новокузнецк|Новокуйбышевск|Новомосковск|Новороссийск|Новосибирск|Новотроицк|Новоуральск|Новочебоксарск|Новочеркасск|Новошахтинск|Новый Уренгой|Ногинск|' & _
'Норильск|Ноябрьск|Нягань|Обнинск|Одинцово|Озерск (Челябинская область)|Октябрьский|Омск|Орел|Оренбург|Орехово-Зуево|Орск|Павлово|Павловский Посад|Пенза|' & _
'Первоуральск|Пермь|Петрозаводск|Петропавловск-Камчатский|Подольск|Полевской|Прокопьевск|Прохладный|Псков|Пушкино|Пятигорск|Раменское|Ревда|Реутов|Ржев|' & _
'Рославль|Россошь|Ростов-на-Дону|Рубцовск|Рыбинск|Рязань|Салават|Сальск|Самара|Санкт-Петербург|Саранск|Сарапул|Саратов|Саров|Свободный|Севастополь|Северодвинск|' & _
'Северск|Сергиев Посад|Серов|Серпухов|Сертолово|Сибай|Симферополь|Славянск-на-Кубани|Смоленск|Соликамск|Солнечногорск|Сосновый Бор|Сочи|Ставрополь|Старый Оскол|' & _
'Стерлитамак|Ступино|Сургут|Сызрань|Сыктывкар|Таганрог|Тамбов|Тверь|Тимашевск|Тихвин|Тихорецк|Тобольск|Тольятти|Томск|Троицк|Туапсе|Туймазы|Тула|Тюмень|Узловая|' & _
'Улан-Удэ|Ульяновск|Урус-Мартан|Усолье-Сибирское|Уссурийск|Усть-Илимск|Уфа|Ухта|Феодосия|Фрязино|Хабаровск|Ханты-Мансийск|Хасавюрт|Химки|Чайковский|Чапаевск|' & _
'Чебоксары|Челябинск|Черемхово|Череповец|Черкесск|Черногорск|Чехов|Чистополь|Чита|Шадринск|Шали|Шахты|Шуя|Щекино|Щелково|Электросталь|Элиста|Энгельс|Южно-Сахалинск|' & _
'Юрга|Якутск|Ялта|Ярославль'
$hForm1 = GUICreate('Form1', 189, 173)
$idCombo = GUICtrlCreateCombo('', 16, 24, 145, 25)
$hCombo = GUICtrlGetHandle(-1)
GUICtrlSetData(-1, $sComboDataDefault)
$IdButton = GUICtrlCreateButton('Что Выбрал', 56, 104, 75, 25)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND')
While 1
If $bCombo Then
$sComboRead = GUICtrlRead($idCombo)
$aArray = StringRegExp('|' & $sComboDataDefault & '|', '(?i)\|(' & StringRegExpReplace($sComboRead, '([^А-яЁё\w\s])', '\\$1') & '[^|]*?)\|', 3)
If Not @error Then
For $i = 0 To UBound($aArray) - 1
$sComboData &= '|' & $aArray[$i]
Next
GUICtrlSetData($idCombo, $sComboData)
_GUICtrlComboBox_ReplaceEditSel($hCombo, $sComboRead)
Else
GUICtrlSetData($idCombo, $sComboDataDefault)
EndIf
$sComboData = ''
$bCombo = False
EndIf
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $IdButton
$sComboRead = GUICtrlRead($idCombo)
If Not StringStripWS($sComboRead, 8) Then
$aPos = WinGetPos($hForm1)
$iToolTip = ToolTip('выберите значение из выпадающего списка', $aPos[0] + 16 + 145, $aPos[1] + 24 + 25 + 25, '', 1, 1 + 2 + 4)
ContinueLoop
EndIf
MsgBox(262144, 'Что Выбрал:', $sComboRead, 1)
Case $GUI_EVENT_MOUSEMOVE
If $iToolTip Then ToolTip('')
EndSwitch
WEnd
Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
If ($lParam = $hCombo) And (BitShift($wParam, 16) = 6) Then $bCombo = True
Return $GUI_RUNDEFMSG
EndFunc