|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как реализовать в скрипте возможность автозаполнения |
|
[решено] Как реализовать в скрипте возможность автозаполнения
|
Старожил Сообщения: 186 |
Профиль | Отправить PM | Цитировать Добрый день! Дело вот в чем: когда в строке гугл вводишь начало слова, всплывает подсказка, где можно выбрать различные варианты продолжения слова/фразы. Как такую же вещь реализовать в скрипте? К примеру, как нужно дополнить нижеследующий скрипт, чтобы при вводе символа, с которого начинается хоть 1 элемент массива (цифр 1, 2, 3 или 4), всплывала подсказка с вариантом окончания (в подсказке должен содержаться сам элемент массива, то есть одно из 111, 222, 333, 444):
#include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Global $Array[4] = [111, 222, 333, 444] $Form1 = GUICreate("Form1", 511, 137, 192, 124) $Input1 = GUICtrlCreateInput("Введите что-нибудь", 144, 40, 145, 21) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd |
|
Отправлено: 15:40, 02-10-2009 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Это называется автозаполнение.
См. в справке пример к функции _GUICtrlComboBox_AutoComplete. Тему переименовал. |
------- Отправлено: 15:52, 02-10-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 186
|
Профиль | Отправить PM | Цитировать Я не совсем это имел в виду. Когда вводишь часть слова, под полем ввода должно появиться окно с различными вариантами продолжения (точь-в-точь как в гугле). _GUICtrlComboBox_AutoComplete заполняет поле, а не предлагает всевозможные варианты.
Вот чуточку подправленный тот же код, но теперь при вводе 1,2,3 или 4 должно появляться окошко с двумя вариантами продолжения: #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Global $Array[8] = [111, 1111, 222, 2222, 333, 3333, 444, 4444] $Form1 = GUICreate("Form1", 511, 137, 192, 124) $Input1 = GUICtrlCreateInput("Введите что-нибудь", 144, 40, 145, 21) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd |
Последний раз редактировалось evg64, 02-10-2009 в 16:13. Причина: Внести код Отправлено: 16:06, 02-10-2009 | #3 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата evg64:
#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GUIComboBox.au3> ; Global $aAutoComplete_Array[8] = ["abc", "абв", 111, 222, 333] Global $iSetAutoComplete = 0 $Form1 = GUICreate("Form1", 511, 137, 192, 124) $nCombo = GUICtrlCreateCombo("Введите что-нибудь", 140, 40, 140, 50) $hCombo = GUICtrlGetHandle(-1) $nCaseSense_CheckBox = GUICtrlCreateCheckbox("Учитывать регистр букв", 140, 15, -1, 15) GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch If $iSetAutoComplete Then $iSetAutoComplete = 0 GUIRegisterMsg($WM_COMMAND, "") $iCaseSense = Number(GUICtrlRead($nCaseSense_CheckBox) = $GUI_CHECKED) _GUICtrlCombo_SetAutoComplete($hCombo, $aAutoComplete_Array, $iCaseSense) GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") EndIf WEnd Func _GUICtrlCombo_SetAutoComplete($hCombo, ByRef $avArray, $iCaseSense=0) Local $sEdit_Text = _GUICtrlComboBox_GetEditText($hCombo) If $sEdit_Text = "" Then Return SetError(1, 0, 0) Local $iEdit_Text_Len = StringLen($sEdit_Text) _GUICtrlComboBox_ResetContent($hCombo) _GUICtrlComboBox_SetEditText($hCombo, $sEdit_Text) For $i = 0 To UBound($avArray)-1 If StringCompare(StringLeft($avArray[$i], $iEdit_Text_Len), $sEdit_Text, $iCaseSense) = 0 Then _ GUICtrlSetData($nCombo, $avArray[$i], "") Next If _GUICtrlComboBox_GetList($hCombo) <> "" Then _GUICtrlComboBox_ShowDropDown($hCombo, True) _GUICtrlComboBox_SetEditText($hCombo, $sEdit_Text) EndIf EndFunc Func WM_COMMAND($hWnd, $nMsg, $wParam, $lParam) Local $nNotifyCode = BitShift($wParam, 16) Local $nID = BitAND($wParam, 0xFFFF) Local $hCtrl = $lParam Switch $nID Case $nCombo Switch $nNotifyCode Case $CBN_EDITCHANGE, $CBN_EDITUPDATE $iSetAutoComplete = 1 Case $CBN_SELENDOK, $CBN_CLOSEUP Case $CBN_KILLFOCUS, $CBN_SELENDCANCEL Local $sEdit_Text = _GUICtrlComboBox_GetEditText($hCombo) _GUICtrlComboBox_ResetContent($hCombo) _GUICtrlComboBox_SetEditText($hCombo, $sEdit_Text) EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc |
|
------- Последний раз редактировалось Creat0R, 03-10-2009 в 20:06. Отправлено: 17:28, 02-10-2009 | #4 |
Старожил Сообщения: 186
|
Профиль | Отправить PM | Цитировать Класс! Здорово работает!
Если можно, опишите вкратце принцип работы, а то сам никак не пойму) Как можно убрать чувствительность к регистру при вводе на русском языке? |
|
Отправлено: 23:29, 02-10-2009 | #5 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата evg64:
|
|
------- Отправлено: 20:07, 03-10-2009 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Как реализовать. VistaMizer интегрированная в дистрибутив | K.A.V. | Автоматическая установка Windows 2000/XP/2003 | 5 | 30-09-2009 00:15 | |
[решено] Можно ли как-нибудь обрабатывать фатальные ошибки в скрипте? | evg64 | AutoIt | 5 | 16-09-2009 22:58 | |
[решено] P5K/EPU + RAID как реализовать? | svchost | Материнские платы и память | 4 | 20-10-2008 16:35 | |
[решено] Поиск (меню Пуск): очистка автозаполнения от глюка | khrust | Microsoft Windows 2000/XP | 5 | 03-07-2007 18:44 | |
[решено] Отмена .Автозаполнения. | Ariel | Microsoft Windows 2000/XP | 4 | 14-02-2007 01:28 |
|