Что нового

Словарь для GUICtrlCreateEdit

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
Добрый день!

А возможнор ли для GUICtrlCreateEdit создать что то типа словаря?
т.е. изначально поле - пустое, но, когда начинается ввод текста, то, скажем, после 2-3 букв подставляется что то типа возможности выбора из некоего словаря?
Изначально предполагается, что список слов, вводимый в это поле - ограничен неким перечнем.
Но чтоб можно было бы ввести и слово не из словаря.

Или это перебор для AutoIt'а?
 
A

Alofa

Гость
Re: Словарь для GUICtrlCreateDate

ВиталийВВ сказал(а):
... возможнор ли для GUICtrlCreateDate создать что то типа словаря?
Код:
GUICtrlCreateDate() ; Создаёт элемент содержащий дату и время.

Что вы там собрались вводить? :rofl:
 
Автор
В

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
Re: Словарь для GUICtrlCreateDate

Мой косяк, командир! :(
Имел ввиду: GUICtrlCreateEdit
Чтоб было более понятно то, что хочу - нужно что то типа того, как в редакторе AutoIt'а вводишь (начинаешь вводить) название функции и появляется список, который фокусируется по мере введения самого слова.

PS исправил название темы и сам текст 1-го письма
 
Автор
В

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
http://autoit-script.ru/index.php?topic=13743.msg87184#msg87184

Вот тут примерно как хотелось бы. Но в примере - 3 окна.
1 - ввод
2 - результат поиска
3 - список вариантов.
А мне, по идее, надо бы чтобы все делалось в одном окне.
Т.е. пользователь пишет, рядом всплывает типа окно, и он выбирает мышкой или стрелками, Затем Ентер. и в поле ввода оказывается выбранное им слово, а он -продолжает писать следующее.
Приведенный пример - для меня слишком сложно к переделки под мою задачу :(

И все примеры рассчитаны именно на ввод 1 слова, а нужен ввод нескольких слов, и каждое из них будет искаться в словаре.

По идее - надо именно как в редакторе AutoIt'а. там сделано - совсем идеально для меня.
 

Skif_off

Знающий
Сообщения
173
Репутация
12
ВиталийВВ
GUICtrlCreateCombo() со стилем $CBS_SIMPLE не пробовали?
 
Автор
В

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
Skif_off сказал(а):
ВиталийВВ
GUICtrlCreateCombo() со стилем $CBS_SIMPLE не пробовали?

Это не то, ибо данное применимо к GUICtrlCreateCombo() . А мне нужно именно поле Edit, чтоб была б возможность введение нескольких слов, в любом порядке.
Единственное, что пока более-менее приходит в голову - запуск еще одной программы, которая бы анализировала что я ввожу и делала автозамену. Что то типа этого.
Пока что сделал - 2 поля: Edit и Combo и натыкивая в Комбо - собирается нужная конструкция в Едит.
В принципе - нормально, но хотелось бы бОльшего изящества :smile:
 
Автор
В

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
Код:
#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


Нашел такой пример, лишнее чуть удалил. Работает красиво! Но не могу сообразить - помогите: как сделать, когда (ввожу слово, выбирается нужное) и нажимаю ENTER, что происходило "применение" выбора. Если открою список и кликну куда надо - происходит, а по Ентеру - не могу сообразить. :(
 
Автор
В

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
InnI сказал(а):
Туплю, не могу сообразить :(

Но похоже, необходимость - отпала. Удобнее из списка выбирать, нежели начинать печатать. Если же пойду по данному пути, то там еще возникают попутные задачи.

Одним словом, предлагаю считать тему не решенной, но закрытой :smile:
 
Верх