Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как реализовать в скрипте возможность автозаполнения

Ответить
Настройки темы
[решено] Как реализовать в скрипте возможность автозаполнения

Старожил


Сообщения: 186
Благодарности: 4

Профиль | Отправить 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

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Это называется автозаполнение.

См. в справке пример к функции _GUICtrlComboBox_AutoComplete.

Тему переименовал.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 15:52, 02-10-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 186
Благодарности: 4

Профиль | Отправить 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
P.S. Такая же штука и в Scite всплывает, когда начинаешь вводить имя какой-нибудь встроенной функции.

Последний раз редактировалось evg64, 02-10-2009 в 16:13. Причина: Внести код


Отправлено: 16:06, 02-10-2009 | #3


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить 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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Последний раз редактировалось Creat0R, 03-10-2009 в 20:06.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:28, 02-10-2009 | #4


Старожил


Сообщения: 186
Благодарности: 4

Профиль | Отправить PM | Цитировать


Класс! Здорово работает!
Если можно, опишите вкратце принцип работы, а то сам никак не пойму)

Как можно убрать чувствительность к регистру при вводе на русском языке?

Отправлено: 23:29, 02-10-2009 | #5


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата evg64:
Как можно убрать чувствительность к регистру при вводе на русском языке? »
Поправил.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 20:07, 03-10-2009 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как реализовать в скрипте возможность автозаполнения

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как реализовать. 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




 
Переход