:: Visual Foxpro, Foxpro for DOS
Как организовать изменение записи через ComboBox?
Tir

Сообщений: 38
Дата регистрации: 21.03.2005
Доброго времени суток, уважаемые лисоводы. Такой вопрос: как организовать изменение значения записи в таблице (тип данных поля - Character) через ComboBox (Style=Dropdown Combo) с вводом нового значения с клавиатуры? При попытке обновить запись строкой, введённой в ComboBox с клавиатуры, запись при потере ComboBox-ом фокуса обновляется не введённым значением, а пустой строкой. Причём обновляется таким странным способом всегда последняя запись в таблице, вне зависимочти от того, на какой записи находился указатель на момент ввода. В чём проблема? Заранее спасибо.




------------------
Последний плюс всегда на могиле
Ratings: 0 negative/0 positive
Re: Как организовать изменение записи через ComboBox?
Перминов Игорь

Сообщений: 1591
Откуда: Красная Орловка
Дата регистрации: 16.09.2001
Смотри DisplayValue




------------------
Без коментариев..
Ratings: 0 negative/0 positive
Re: Как организовать изменение записи через ComboBox?
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi Tir!

И учитывай, что когда в комбо вводится то чего нету в источнике данных - он автоматом переводит указатель записи на EOF() - что вполне логично IMHO.
В общем я бы не советовал тебе делать правку поля через комбо - он не для того предназначен.




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как организовать изменение записи через ComboBox?
Syberex

Сообщений: 1432
Откуда: Кострома
Дата регистрации: 19.01.2004
Есть комбо-класс собственного производства с
добавлением/изменением/удалением, могу выслать.




------------------
Ratings: 0 negative/0 positive
Re: Как организовать изменение записи через ComboBox?
Tir

Сообщений: 38
Дата регистрации: 21.03.2005
2Syberex
Вышли plz на ''.phorum_html_encode('asmodey@avtograd.ru').''




------------------
Последний плюс всегда на могиле
Ratings: 0 negative/0 positive
Re: Как организовать изменение записи через ComboBox?
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
попробуй Thisform.Combo1.Value = Thisform.Combo1.Text в методе LostFocus.
Фишка a том, то text превращается в value при нажатии Enter, а при потере фокуса
значение в value не переносится.
Ratings: 0 negative/0 positive
Re: Как организовать изменение записи через ComboBox?
Tir

Сообщений: 38
Дата регистрации: 21.03.2005
При выполнении ThisForm.Combo1.Value=ThisForm.Combo1.Text (как писал Влад Колосов) при событии Valid программа стала заменять имеющуюся запись на введённую, а не на пустую строку, что уже решает половину проблемы. Но когда я начинаю изменять имеющуюся запись в ComboBox видимо начинается поиск этой новой записи в наборе строк, содержащемся в ComboBox. Естественно такая строка не находится, и указатель записи перемещается на последнюю запись (а не на EOF, как писал Igor Korolyov) и изменяется значение соответственно последней записи, а не той, которую я начинал менять. Вот ещё бы эту проблему решить - и дело можно считать сделанным




------------------
Последний плюс всегда на могиле
Ratings: 0 negative/0 positive
Re: Как организовать изменение записи через ComboBox?
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
Хм... Суть комбобокса такова, что он не предназначен для редактирования записей, а только для ввода значения, которого нет в списке (поэтому Value остается пустым, у этой строки ID=0) или выбора из списка. Когда ты пытаешься "редактировать" происходит, как правильно было замечено, контекстный поиск, не более того.
Ratings: 0 negative/0 positive
Re: Как организовать изменение записи через ComboBox?
Tir

Сообщений: 38
Дата регистрации: 21.03.2005
А можно как-то этот контекстный поиск отключить?




------------------
Последний плюс всегда на могиле
Ratings: 0 negative/0 positive
Re: Как организовать изменение записи через ComboBox?
FoxHunter

Сообщений: 161
Дата регистрации: 29.03.2005
IncrementalSearch = .F.
Ratings: 0 negative/0 positive
Re: Как организовать изменение записи через ComboBox?
Syberex

Сообщений: 1432
Откуда: Кострома
Дата регистрации: 19.01.2004
2Tir
Отправил!




------------------
Ratings: 0 negative/0 positive
Re: Как организовать изменение записи через ComboBox?
Dag
Столкнулся с аналогичной проблемой. В MSDN'е написано, что
комбо является комбинацией классов Textbox и Listbox, но работать
с комбо, как в текстбоксе не получается.
Пришлось мне заменить один обьект типа комбо двумя - текстбокс и
невидимый по умолчанию листбокс. При необходимости сделать выбор из списка
оживляем листбокс, выбранное в списке значение перебрасываем в текстбокс,
скрываем листбокс, редактируем значение в текстбоксе.
Такой вот debilismus.

2 Syberex
Если не затруднит, прошу выслать Ваш класс на мыло dag_roms@mail.ru

2 ALL

Кто-нибудь знает как можно с клавиатуры заставить комбо открыть список
выбора (вызвать событие DropDown)? Тыкать каждый раз мышью в
треугольник drop-down arrow уже утомило...
Ratings: 0 negative/0 positive
Re: Как организовать изменение записи через ComboBox?
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
Альт+стрелка вниз, стандартно...
Ratings: 0 negative/0 positive
Re: Как организовать изменение записи через ComboBox?
PaulWist

Сообщений: 14625
Дата регистрации: 01.04.2004
Цитата:
Кто-нибудь знает как можно с клавиатуры заставить комбо открыть список
выбора (вызвать событие DropDown)?

Попробуй такой тест, надо из тестбокса перейти по Enter или Tab на комбобокс.

PUBLIC oForm
oForm = CREATEOBJECT('comboclick')
oform.show(1)
DEFINE CLASS comboclick AS form
Caption = "Form1"
Name = "Form1"
ADD OBJECT text1 AS textbox WITH ;
Height = 25, ;
Left = 12, ;
Top = 12, ;
Width = 109, ;
Name = "Text1"
ADD OBJECT combo1 AS combobox WITH ;
RowSourceType = 6, ;
Height = 25, ;
Left = 156, ;
Style = 2, ;
Top = 12, ;
Width = 133, ;
Name = "Combo1"
PROCEDURE Load
CREATE CURSOR test (cID c(10))
FOR i = 1 TO 10
INSERT INTO test (cID) VALUES (TRANSFORM(i))
ENDFOR
ENDPROC
PROCEDURE Init
this.combo1.RowSource= 'test.cID'
this.text1.Value = " Press Enter"
ENDPROC
PROCEDURE combo1.GotFocus
MOUSE CLICK at objtoclient(this,1), objtoclient(this,2) window 'form1' PIXELS
ENDPROC
ENDDEFINE




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Как организовать изменение записи через ComboBox?
Dag
Влад Колосов
PaulWist


Большое спасибо!

Оба способа работают замечательно. Особенно понравился метод
с имитированием действий мыши.

Если в код метода KeyPress добавить эту команду - то открытие списка можно
привязать к любой клавише, например к пробелу

IF nKeyCode==32
NODEFAULT
lcFN=ThisForm.Name
MOUSE CLICK at objtoclient(this,1), objtoclient(this,2) window &lcFN PIXELS
ENDIF

Ratings: 0 negative/0 positive
Re: Как организовать изменение записи через ComboBox?
Burn

Сообщений: 5644
Откуда: Днепр
Дата регистрации: 02.01.2002
Интересно - у меня конструкция MOUSE CLICK at objtoclient(this,1), objtoclient(this,2) вызывает зависание мышки, пока не дернеш клавиатуру, но если выбрать другую точку для клика мыши - MOUSE CLICK AT This.Top+Int(This.Height/2), This.Left+(This.Width-Int(This.Height/2)) то все нормально - можно кработать как мышкой так и клавой




------------------
В борьбе бобра с козлом побеждает бобро
Ratings: 0 negative/0 positive
Re: Как организовать изменение записи через ComboBox?
Владимир Максимов
Автор

Сообщений: 14100
Откуда: Москва
Дата регистрации: 02.09.2000
Добавил в FAQ 2 статьи

Как ввести новое значение непосредственно в ComboBox
Как автоматически раскрыть выпадающий список
Ratings: 0 negative/0 positive
Re: Как организовать изменение записи через ComboBox?
PaulWist

Сообщений: 14625
Дата регистрации: 01.04.2004
Владимир

Прочитал добавленный FAQ - ЗАМЕЧАТЕЛЬНО, просто нет слов как доходчиво.




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Как организовать изменение записи через ComboBox?
Владимир Максимов
Автор

Сообщений: 14100
Откуда: Москва
Дата регистрации: 02.09.2000
Цитата:
"Подумаешь, а я еще и вышивать могу... И на машинке... м-р-р-р" Кот Матроскин
Ratings: 0 negative/0 positive


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

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

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