:: Visual Foxpro, Foxpro for DOS
Можно ли из combobox сделать поле для ввода и редактирования
ZenTigra

Сообщений: 514
Дата регистрации: 03.12.2004
Есть одно текстовое поле, в него часто вносятся с небольшими изменением данные, причем текст изменяется в большинстве случаев в его конце

Например:
Рубашка мужская синяя
Рубашка мужская зеленая
Рубашка мужская красная
Рубашка мужская фиолетовая


Хотелось бы для часто вводимых наборов слов использовать меню, а качестве него попробовал использовать combobox.
Но у меня на жаль ничего не получилось, при выходе с combobox-са поле становиться пустым.

Combobox1.RowSourceType=6-fields
Combobox1.RowSource=table1.text
Combobox1.ControlSousce=T_text &&Переменная
Combobox1.Style=0-DropdownCombo

Можно ли решить мою задачи при помощи combobox-са? И что я делаю не так?
Ratings: 0 negative/0 positive
Re: Можно ли из combobox сделать поле для ввода и редактирования
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
ZenTigra
Можно ли из combobox сделать поле для ввода и редактирования
Можно. Но, не нужно. Слишком много задач необходимо решать в изменении свойств и параметров отображения.
Попробуйте вернуться к заданному Вами же слову МЕНЮ. Подсказка: контекст.



Исправлено 1 раз(а). Последнее : Chemberzhy, 20.02.17 06:17
Ratings: 0 negative/0 positive
Re: Можно ли из combobox сделать поле для ввода и редактирования
Taran

Сообщений: 13625
Откуда: Красноярск
Дата регистрации: 16.01.2008
В общем в фоксе предусмотрен стандартный механизм автодополнения. В textbox autocomplete вроде. Компа нет, за синтакс не ручаюсь.
Попробуй копни.
Ratings: 0 negative/0 positive
Re: Можно ли из combobox сделать поле для ввода и редактирования
matod

Сообщений: 3062
Откуда: Иркутск
Дата регистрации: 31.10.2001
Это две разные задачи - 1) понять, почему у вас комбо не работает, как надо и 2) придумать способ для быстрого выбора значений
Для первой задачи - вот простейший пример.
create Cursor table1 (text C(30))
insert into table1 (text) values ('Рубашка зеленая')
insert into table1 (text) values ('Рубашка красная')
insert into table1 (text) values ('Рубашка фиолетовая')
insert into table1 (text) values ('Рубашка в крапинку')
local oo
oo = createobject( 'myform' )
oo.Show
define Class myform as Form
autocenter=.t.
width=300
height = 200
WindowType = 1
add Object cbo as combobox with;
RowSourceType=6,;
RowSource="table1.text",;
Style=0,;
left=20, top=20, width=200
add Object btn as commandbutton with;
top = 60, left=20, width=150,;
caption='Показать свойства'
procedure btn.Click
with thisform
messagebox( [Cbo.Value="] + .cbo.Value +["] +chr(13)+chr(10) +;
[Cbo.DisplayValue="] + .cbo.DisplayValue +["] )
endwith
endproc
enddefine

Если ввести в комбо существующее значение из списка, то при нажатии на кнопку будет видно, что и свойство value и displayvalue содержат одинаковые значения.
Если введено не существующее значение, то поле value будет пустым. Но, введенный текст никуда не исчезает при перемещении фокуса. Может дело в коде, который выполняется при потере фокуса?

По второму вопросу - не очень понятно, чем может помочь комбо. Он удобен для выбора в списке из нескольких вариантов. Если их больше 10, а тем более с похожими началами - не самый лучший вариант.

Может быть, посмотреть в сторону текстбокса и его свойства AutoComplete?

Или сделать какой-то его аналог. Например, пользователь вводит характерные части названия (например, "руб зел" для выбора "Рубашка зеленая", нажимает Enter, мы перехватываем обработку клавиши, разбираем введенное значение на слова и ищем в таблице подходящие варианты, отображая в списке, контекстном меню, гриде или просто подставляя первый попавшийся.

Можно и другие варианты попробовать - автоинкрементный поиск, справочник с классификатором или их комбинации. Но сперва надо придумать идею, как это должно выглядеть на экране, а потом выбирать способ реализации. С учетом разных ограничений, например, на размер справочника и время реакции.

По своему опыту скажу, что пытаться доработать комбо для нестандартного применения не очень легко, у него есть свои капризы, которые будет не просто обойти.
Ratings: 0 negative/0 positive
Re: Можно ли из combobox сделать поле для ввода и редактирования
Перминов Игорь

Сообщений: 1591
Откуда: Красная Орловка
Дата регистрации: 16.09.2001
Для TextBox в Init пишем:
THIS.AutoCompTable = "AutoComTable.dbf"
THIS.AutoComplete = 3 && или 2 по желанию


------------------
Без коментариев..
Ratings: 0 negative/0 positive
Re: Можно ли из combobox сделать поле для ввода и редактирования
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Насколько я помню, у AutoComplete текстбокса были проблемы с русским языком...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Можно ли из combobox сделать поле для ввода и редактирования
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
На правом клике вызвать форму редактирования справочника.
По выходу из нее перезагрузить комбо
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 32 (Гостей: 32)

© 2000-2024 Fox Club 
Яндекс.Метрика