Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / инкрементный поиск / 8 сообщений из 8, страница 1 из 1
27.07.2004, 10:03
    #32622460
Denis_Alekseevich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инкрементный поиск
Привет всем!!!
Подскажите please. На форме есть textbox в controlsourse его прописанна переменная. А мне нада в этот же textbox прикрутить инкрементный поиск.
поясняю.... оператору придется вводить много раз одни и теже наименования, например за один сеанс работы с прогой придется ввести слово "хлопок раз 30" а хотелось бы чтобы при наборе "хл" сразу выдавалось "хлопок". Конечно моно забить это в combobox, но я хочу инкрементный поиск....
заранее благодарен:-)))
...
Рейтинг: 0 / 0
27.07.2004, 10:21
    #32622506
miv32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инкрементный поиск
Я бы сделал так:
В InteractiveChange засунул метод для
поиска, в котором делался бы select
по вхождению подстроки длиной n символов
(чтобы не лопатить всю базу по вхождению одной буквы)
с выводом результата в список листбокс.
Потом по KeyPress либо выбор, либо отмена.
Примерно так :)
...
Рейтинг: 0 / 0
27.07.2004, 10:22
    #32622511
Станислав C.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инкрементный поиск
Denis_AlekseevichПривет всем!!!
Подскажите please. На форме есть textbox в controlsourse его прописанна переменная. А мне нада в этот же textbox прикрутить инкрементный поиск.
поясняю.... оператору придется вводить много раз одни и теже наименования, например за один сеанс работы с прогой придется ввести слово "хлопок раз 30" а хотелось бы чтобы при наборе "хл" сразу выдавалось "хлопок". Конечно моно забить это в combobox, но я хочу инкрементный поиск....
заранее благодарен:-)))
Я однажды делал такое, только поиск проводился по уже существующему справочнику улиц...

Порядок действий примерно следующий:
- создать справочник вводимых слов, проиндексировать его;
- при нажатии клавиши формировать переменную для поиска;
- искать в справочнике вводимых слов значение переменных (по seek);
- выдать найденное слово в TextBox;
- если слова в справочнике нет, то занести его в справочник и обновить индекс
...
Рейтинг: 0 / 0
27.07.2004, 10:25
    #32622519
инкрементный поиск
Мне думается, что использовать ComboBox - наиболее оптимальное решение.
А чтобы фокс успевал обрабатывать несколько подряд введённых символов, установите _INCSEEK = 5.
Можно, конечно, работать с TextBox'ом, но придётся написать специальный код, а так же иметь массив с вариантами ответов. Я достаточно часто использую этот способ для вывода ограниченного списка вариантов ответов, но, как правило, этот код уникален для каждого конкретного случая. Если интересует, могу привести пример.
...
Рейтинг: 0 / 0
27.07.2004, 10:41
    #32622570
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инкрементный поиск
Насколько я слышал в 9 появилась функция как и в EXCEL - при наборе в текстовое поле - высвчивается подсказка... Если кто работал уже с 9 версией, то пусть меня поправят.
Так что больше уже изобретать уже не надо
...
Рейтинг: 0 / 0
27.07.2004, 11:02
    #32622649
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инкрементный поиск
Пример такой штуки (свойство AutoComplete) в VFP9 описан здесь

http://kodu.neti.ee/~juri4/vfp60/vfp9_autocomplete_ru.htm

Правда с русскими буквами глючит

В более ранних версиях придется как-то выкручиваться.
...
Рейтинг: 0 / 0
27.07.2004, 13:07
    #32623099
Denis_Alekseevich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инкрементный поиск
Вячеслав КлепининЕсли интересует, могу привести пример.
да интересует!!! приведи его (пример)
...
Рейтинг: 0 / 0
27.07.2004, 14:08
    #32623312
инкрементный поиск
Принцип такой. Пользователь вводит в TextBox некоторое количество символов и нажимает Enter. Выполняется поиск в справочнике. Если будет найдена только одна запись, удовлетворяющая условию, то её значение помещается в TextBox. В противном случае выводится форма со списком значений, удовлетворяющих условию поиска, для выбора нужной записи.

Должно быть установлено:
ANSI = OFF
В форме д.б. создано свойство l_Change

В методе InteractiveChange TextBox'a пришем:

thisform.l_Change = .t.

То есть фиксируем, что были изменения значения поля

В методе LostFocus пишем:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
LOCAL c_Text, l_Return

IF thisform.l_Change
	thisform.l_Change = .f.
	c_Text = UPPER(ALLTRIM(this.Value))
	IF LEN(c_Text) >  0 
*+
* Выбрать в курсор записи из таблицы - справочника, удовлетворяющие условию
*+
		SELECT * FROM MyTable WHERE UPPER(MyTable.name) = c_Text ORDER BY name INTO CURSOR t_temp
		IF _TALLY >  0 					&& Если выбрана одна или несколько записей
			IF _TALLY =  1 				&& Если выбрана одна запись
				l_Return = .t.			&& то устанавливаем флаг
			ELSE 						&& Если выбрано более одной записи...
*+
* Если в курсор выбрано более одной записи, то выводим на экран модальную форму, предоставляющую
* возможность выбора одной записи из нескольких. В случае выбора форма возвращает .t.
* (команда RETURN в методе UNLOAD формы)
*+
				DO FORM ChoiceName TO l_Return
			ENDIF 	
*+
* Если в курсор считана одна запись или в форме ChoiceName выбрана какая-то запись из нескольких
* (т.е. l_Return = .T.), то используем это значение.
*+
			this.value = t_temp.name	&& Заменить значение поля на взятое из справочника
		ENDIF 
		USE IN t_temp					&& Закрываем курсор
	ENDIF 
ENDIF 

В принципе, такой вариант ввода моих операторов устраивает. Молотят вовсю, забыв про мышь.

Успехов!!!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / инкрементный поиск / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]