Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Хочу узнать мнение в подходах решения след.задачи [D5]


kserg@ukr.net ©   (2002-07-19 13:46:00) 

Народ, подскажите вар-ты возможных решений для след.проблемки.
Может кто вообще другой подход мне подскажет.
Вообщем, в любом случае буду признателен.

Есть модал.форма ввода данных в БД. На ней куча TEdit-ов.
Для удобства ввода юзером есть алгоритм "быстрого ввода", суть котр.: по событию TEdit.OnChange осуществляется поиск в БД через параметризованый SQL, рез-ты котр. вывожу в DBGrid.
Сам DBGrid изначально невидим, а в событии TEdit.OnEnter я поизционирую Grid в нужное место под TEdit-om и делаю его видимым.
В TEdit-e юзер может набирать слово, или нажать <вниз> / <вверх>
для прокрутки в DBGrid-e или <Enter> для выбора нужного значения из DBGrid и подстановки его в TEdit.
Затем, по событию TEdit.OnExit делаю Grid невидимым.
Алгоритм в общем мною отработан, но вот осталась одна неприятная мелочь.
Проблемка в том, что юзер набирая слово и затем видя нужное слово в Gride интуитивно пытается сделать выбор из Grid-a не нажатием <Enter>, а ткнув мышой. А это приводит к тому, что срабатывает TEdit.OnExit и вместо выбора Grid просто скрывается.

Какие будут предложения?


kserg@ukr.net   (2002-07-19 15:05:00) [1]

Увы, всё таки это немного нето: в RxLookupEdit1 поиск идет по первым символам, а в моем вар-те - поиск выполнялся через SQL по условию like "%%", соот-но юзер при вводе видит постоянно уменьшающийся список со всеми значениями, подходящими к ключевому слову.


kalliopiy   (2002-07-19 15:05:00) [2]

Да вы чего ребята?

Установил правильно LookupSource, LookupField, LookupDisplay ?

Тогда поставь в false PopupOnlyLocate и стартуй, так сказать!


kaif   (2002-07-19 15:01:00) [3]

Может, там есть DropDown := True или метод DropDown. Вызови его по KeyPressed.


kserg@ukr.net   (2002-07-19 14:55:00) [4]

Хелпа у меня к сожалению нет.
Взял RxLookupEdit1, но видать не включил какую-то "птичку", но список при вводе не открывается.


kalliopiy   (2002-07-19 14:48:00) [5]


> А чем конкретно надо воспользоваться:
> RxDBLookupCombo1 или RxLookupEdit1 ?

Здается мне, что лучше взять RxLookupEdit. Хотя два эти компонента достаточно похожи. Если у тебя к ним хелп есть, я думаю ты разберешься.


kserg@ukr.net   (2002-07-19 14:45:00) [6]

>kalliopiy © (19.07.02 14:39)
>Есть такие штуки. Надо ему взять RxLib.
Вот это уже ближе к телу :-)
А чем конкретно надо воспользоваться:
RxDBLookupCombo1 или RxLookupEdit1 ?


kalliopiy   (2002-07-19 14:39:00) [7]


> kaif © (19.07.02 14:29)


Есть такие штуки. Надо ему взять RxLib. Там по-моему как раз то, что нужно есть.


kserg@ukr.net   (2002-07-19 14:38:00) [8]

>kalliopiy © (19.07.02 13:56)
>А нельзя ли просто использовать LookupComboBox?
А разве можно из LookupComboBox внести значение в TEdit, при этом не меняя значения LookupComboBox?


kaif   (2002-07-19 14:29:00) [9]

Человек хочет сделать контекстное меню с реакцией по нажатию каждой клавиши, по моему. Это хорошо смотрится. Просто Grid - слишком тяжелый компонент для отображения такого списка. Лучше сделать свой компонент вместо TEdit для этой цели. Хотя это не так просто... Но можно посмотреть, как сделаны разные TDBComboBox- ы и понять принцип.


kalliopiy   (2002-07-19 13:56:00) [10]

Это хорошо, что ты вот так все расписал, но лучше бы ты на словах рассказал какая у тебя задача, т.е. что бы тебе хотелось получить на выходе. Я так понимаю, что необходимо дать возможность пользователю делать ввод с подстановкой. А нельзя ли просто использовать LookupComboBox?

Во всяком случае твой вариант с видимостью/невидимостью грида - не лучшее решение, поскольку такое моргание никого в восторг не приведет...


Наверх

Титульная страница Поиск, карта сайта Написать письмо