![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Событие изменния ComboBox-a
Дима С © (2008-09-15 00:51:00)Можно как-то узнать каким образом было сделано изменение значения Combo - с помощью клавиатуры (клавиши вверх/вниз, incr.search) или с помощью мыши?
{RASkov} (2008-09-15 18:00:00) [21]> [13] Dmitry S © (15.09.08 17:42)
И что? :) Я ничего не понял... :(
Программа пишется в трактор?:)
Dmitry S (2008-09-15 17:42:00) [22]
> {RASkov} © (15.09.08 16:46) [12]
Если пользователь тракторист (тот, кто работает додумается работать с данной формой с помощью клавиатуры), то он сам нажмет Tab (или другие кнопки, которые определены мной), чтобы уйти с данного контрола, тем самым вызвать OnExit и сохранить данные из комбика куда нужно.
А если пользователь тыкает мышкой - мне надо, чтобы фокус не оставался на комбике, а пропадал, тем самым вызывай OnExit... и так далее...
{RASkov} (2008-09-15 16:46:00) [23]> [10] Dmitry S © (15.09.08 12:58)
А теперь подумай, как программа определит, что выбранный итем это временно выбранный с клавиатуры пока не дошли до нужного?
А как нужный определить?
У комбика должен быть ИИ.
Можно конечно сделать задержку на окончательный выбор итема и вызова "долгой" процедуры. Но как определить паузу?
Т.е. если в течении паузы выбран другой итем, то паузу начинать с нуля и "зыбыть" предыдущий выбор..... по окончании паузы вызвать процедуру для выбранного последним итема... Как-то так наверное....
Плохиш (2008-09-15 13:21:00) [24]
> росто обычно пользователь мышкой сразу выбирает нужный результат,
> а клавиатурой за несколько нажатий.
О, мышка с устройством чтения мыслев :-))
Dmitry S (2008-09-15 12:58:00) [25]
> ComboBox.ItemIndex := Value;
>
> Это как будешь отлавливать?
А это без разницы как :)
Просто обычнопользователь мышкой сразу выбирает нужный результат, а клавиатурой за несколько нажатий.
И если пользователь выбрал нужный результат мышью, можно автоматически выполнить некоторое действие (тем самым избавить пользователя от недопонимания и лишнего клика). Т.е. сделать поведение программы ожидаемым для пользователя.
{RASkov} (2008-09-15 12:34:00) [26]> [8] Правильный$Вася (15.09.08 12:29)
Хм... кто последний, того и...
? :) Да ладно, мне это не интересно)
>>
Автор, лучше озвуч главную цель задуманного, может найдется решение проще....
Правильный$Вася (2008-09-15 12:29:00) [27]
> А эт смотря как вставишь :)
клавой вызываю контектное меню, а мышой в нем кликаю
или наоборот
{RASkov} (2008-09-15 12:21:00) [28]> [6] Правильный$Вася (15.09.08 12:07)
А эт смотря как вставишь :)
Правильный$Вася (2008-09-15 12:07:00) [29]а если комбо допускает редактирование, я вставляю данные из буфера
это как по твоей классификации - мышой или клавой?
Плохиш (2008-09-15 11:15:00) [30]
> Dmitry S © (15.09.08 10:42) [3]
>
> > А зачем? Какая при этом может быть разница?
>
> Надо. Для упрощения работы с программой.
Спасибо, развеселил...
Ega23 (2008-09-15 10:53:00) [31]ComboBox.ItemIndex := Value;
Это как будешь отлавливать?
Dmitry S (2008-09-15 10:42:00) [32]
> А зачем? Какая при этом может быть разница?
Надо. Для упрощения работы с программой.
А как такая идея:
Ловить события OnMouseDown и OnKeyDown. Какое было последнее перед OnClick, то и определяет чем работал пользователь.
Германн (2008-09-15 01:07:00) [33]
> Дима С (15.09.08 00:51)
А зачем? Какая при этом может быть разница?
{RASkov} (2008-09-15 01:04:00) [34]Врядли... В худшем случае свой "комбик" делать, где и фильтровать изменение...