:: Главная :: Решения :: Статьи :: Проект "Русский help" :: Файловый архив :: Фотоальбом :: Ссылки :: | ||
Л и с о в о д ы в с е х с т р а н, о б ъ е д и н я й т е с ь !!! |
Как автоматически раскрыть выпадающий список | ||
---|---|---|
Вопрос
Каким образом можно автоматически раскрыть выпадающий список в ComboBox Ответ К сожалению, в FoxPro не предусмотрено никакого метода, раскрывающего выпадающий список. Поэтому, по сути, приходится симулировать действия пользователя с клавиатуры или мышкой. Для раскрытия выпадающего списка в ComboBox пользователь может воспользоваться одним из следующих способов: Последний вариант нам не подходит, поскольку мы не можем сказать заранее, какие именно настройки будут у ComboBox. Как правило, автоматическое раскрытие выпадающего списка ComboBox требуется в момент попадания фокуса непосредственно в ComboBox. Поэтому весь последующий код следует писать в событии GotFocus() собственно ComboBox.
Недостатком "мышиных" способов нажатия является визуальное перемещение указателя мыши без участия пользователя. Впрочем, можно при помощи функций MROW() и MCOL() запомнить текущее положение указателя мыши и после разворачивания выпадающего списка той же командой MOUSE вернуть его на место. Общим недостатком всех перечисленных методов является то, что они не срабатывают, если у ComboBox сделана настройка
И Вы переводите фокус в ComboBox, нажав левой клавишей мыши на самом объекте ComboBox. Точнее, эти методы срабатывают и разворачивают выпадающий список, но тут же список "сворачивается", поскольку в данном случае нажатие левой клавишей мыши в области собственно ComboBox означает отказ от выбора. Таким образом, описанные методы автоматического разворачивания выпадающего списка будут всегда работать, только если фокус переводиться в ComboBox при помощи клавиатуры или программно. При переводе фокуса мышкой - результат зависит от настройки ComboBox.Style. Соответственно, чтобы также автоматически закрыть ранее раскрытый список (без выбора элемента списка) необходимо симулировать одно из следующих действий пользователя:
Проблема автоматического закрытия выпадающего списка заключается в том, что нет возможности определить, раскрыт ли в данный момент этот список или нет. Кроме того, на клавишу "Esc" может быть настроено нажатие кнопки со свойством CommandButton.Cancel = .T. Т.е. если список не раскрыт, то симуляция нажатия клавиши "Esc" может привести к непредсказуемым последствиям. Ну, а перемещение указателя мыши, тоже может вызвать недоумение пользователя. Впрочем, указатель мыши можно вернуть в исходной состояние, используя функции MROW() и MCOL(). |
||
Тема | Просмотров | Написано | Написано |
---|---|---|---|
ComboBox | 5462 | Владимир Максимов | 01.03.05 22:12 |
Как автоматически раскрыть выпадающий список | 12096 | Владимир Максимов | 15.05.05 18:58 |
Как ввести новое значение непосредственно в ComboBox | 10097 | Владимир Максимов | 15.05.05 19:35 |
Не отображается выбранное значение в ComboBox | 12410 | Владимир Максимов | 19.05.05 17:37 |
© 2006 Fox Club  |