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

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

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

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

В более ранних версиях придется как-то выкручиваться.
...
Рейтинг: 0 / 0
инкрементный поиск
    #32623099
Denis_Alekseevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав КлепининЕсли интересует, могу привести пример.
да интересует!!! приведи его (пример)
...
Рейтинг: 0 / 0
инкрементный поиск
    #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
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / инкрементный поиск
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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