ComboBox - при ручном вводе пустой результат

olegv12
Дата: 16.11.2012 22:28:09
Всем добрый день. Создаю ComboBox, из списка добавляет отлично, а при вводе вручную получается пустое поле. Переключаю на List - ручной ввод исключается, снова включаю Combo - данные вводятся, но в результирующей таблице пусто.
Jonny540
Дата: 17.11.2012 06:00:41
olegv12
Всем добрый день. Создаю ComboBox, из списка добавляет отлично, а при вводе вручную получается пустое поле. Переключаю на List - ручной ввод исключается, снова включаю Combo - данные вводятся, но в результирующей таблице пусто.
Вам сюда
olegv12
Дата: 17.11.2012 09:35:42
Jonny540,
Спасибо!
Дело в том, что в учебнике написано, что либо можно выбрать из списка, либо ввести с клавиатуры... Притом, что при вводе символов должно автоматом подставляться наиболее близкое значение из списка. Подстановка не происходит.
Ладно, буду разбираться самостоятельно...
Jonny540
Дата: 17.11.2012 11:16:40
olegv12
Притом, что при вводе символов должно автоматом подставляться наиболее близкое значение из списка. Подстановка не происходит.
Это смотря, что тебе надо. Если инкрементный поиск - поищи по форуму, уже обсуждалось.
Если редактирование справочника - то это нужно по-другому делать.
olegv12
Дата: 18.11.2012 19:12:14
Jonny540,
Мне надо в переменную ввести значение из таблицы или вручную, подобрав наиболее подходящее или вообще ввести новое значение. Из таблицы все вводится отлично, а при наборе вручную или корректировке - refresh() - и пустое поле...
Jonny540
Дата: 19.11.2012 05:46:57
olegv12
Jonny540,
Мне надо в переменную ввести значение из таблицы или вручную, подобрав наиболее подходящее или вообще ввести новое значение. Из таблицы все вводится отлично, а при наборе вручную или корректировке - refresh() - и пустое поле...
1. Виды поиска

2. Статью читал? Это оттуда:
 * Событие ComboBox.Valid()  
  IF EMPTY(This.DisplayValue)=.F. AND EMPTY(This.Value)=.T.  
 	* Пользователь ввел значение, но в списке его нет (ничего не выбрано)  
 	* Добавляем в источник данных ComboBox новое значение  
  	...  
 	* Обновляем источник данных самого ComboBox, чтобы он отобразил это новое значение  
  	This.Requery()  
  ENDIF
Дед Евгений
Дата: 23.11.2012 11:40:47
Я на основе ComboBox делал ввод значений для поика с сохранением истроии. Вот такой код:

SET NEAR ON
IF EMPTY(This.Text)
RETURN
ENDIF
FindTextKarta = PROPER(ALLTRIM(This.Text))
= SEEK(FindTextKarta,"Sp_sub","fam")
IF EOF("Sp_sub")
= MESSAGEBOX("Запись в картотеке не найдена"+CHR(13)+FindTextKarta,48,"Поиск")
GO BOTTOM IN Sp_sub
ENDIF
*// Далее сохранение введенного текста в ComboBox
NewPopup = .T.
FOR nn = 1 TO This.ListCount
IF This.List(nn) = ALLT(FindTextKarta)
NewPopup = .F.
ENDIF
ENDFOR
IF NewPopup = .T.
IF This.ListCount >= 20 && Ограничение количество записей в ComboBox
This.RemoveItem(1)
ENDIF
This.AddItem(FindTextKarta)
ENDIF
This.Value = FindTextKarta
This.Requery
Дед Евгений
Дата: 23.11.2012 14:09:09
В дополнение к вышенаписаному.
Эта функция стоит в свойсве Valid.
Согда мы набираем текст в ComboBox, этот текст записывается в го свойствах Text, Поэтому и нужно выбирать из него это значение, а там уже записывать или в сам ComboBox или в курсор, это уже по желанию.
В примере приведена запись в сам бокс, с проверкой, нет ли уже такого значения в списке. А записать можно куда угодно.
Этот код мной был написан еще лет 10 назад, давненько в его не заглядывал, но работает без сбоев.