|
Как скрыть элемент при потери им фокуса?
|
|||
---|---|---|---|
#18+
Есть поле со списком, по умолчанию скрытое. Программно (по нажатию кнопки) поле выводится на экран, получает фокус, открывает список для выбора конкретного значения пользователем. Если пользователь выбирает значение, то возникает событие обновления, по которому фокус переводится с поля, само поле скрывается. Но вот если пользователь ничего из списка не выбирает, то и событий никаких нет, кроме событий выхода и потери фокуса. Но они не позволяют скрыть поле - оно по-прежнему в фокусе! Подскажите, как данную проблему лучше обойти? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2007, 15:02 |
|
Как скрыть элемент при потери им фокуса?
|
|||
---|---|---|---|
#18+
e-ravenНо вот если пользователь ничего из списка не выбирает, то и событий никаких нет. Так по какому событию вы хотите скрыть это поле? Вообще не рекомендуется делать контролы, которые исчезают и появляются, лучше Enable использовать... Это так совет. Пользователя может обескуражить если контрол вдруг исчезнет. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2007, 15:14 |
|
Как скрыть элемент при потери им фокуса?
|
|||
---|---|---|---|
#18+
В том-то и дело, что не найду такого события. А скрывать комбобокс нужно по той причине, что с помощью него и кнопки эмулируется тулбар с кнопкой DropDown. Если сделать высоту комбобокса нулевой, всё равно комбобокс немного виден. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2007, 18:01 |
|
Как скрыть элемент при потери им фокуса?
|
|||
---|---|---|---|
#18+
e-raven, может, у комбобокса уменьшить ширину (не высоту), оставив видимой только кнопку (а, свойству "Ширина списка" присвоить конкретное значение, а не "Авто")? И - вот ещё. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2007, 18:51 |
|
Как скрыть элемент при потери им фокуса?
|
|||
---|---|---|---|
#18+
Если уменьшить и высоту и ширину поля со списком до нуля, то на экране комбобокс проявляется в виде точки, что не очень смотрится. Уж лучше в виде горизонтальной или вертикальной черты, которую можно расположить под кнопкой или слева от неё (справа неудобно, так как список открывается вправо; если только кнопку со стрелкой расположить слева от обычной кнопки, но это непривычное расположение). Вариант с контекстным меню сам по себе более громоздкий, к тому же в моей базе все меню формируются динамически при входе в базу - не хотелось бы их плодить. Блокировать комбобокс, как предлагают некоторые, не получится - та же проблема, что и со скрытием: пока элемент имеет фокус, его ни блокировать, ни скрыть нельзя!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2007, 10:30 |
|
Как скрыть элемент при потери им фокуса?
|
|||
---|---|---|---|
#18+
В одноименной закрытой ветке Люботыт (сбасибо ему) дал очевидное решение: в процедуре обработки события потери фокуса комбобокса использовать SetFocus на другой элемент. Но по ходу пришлось решать следующую проблему. После открытия списка возможны следующие варианты: пользователь делает выбор мышью, нажимает ESC, щелкает мышью на форме (фокус остается на комбобоксе) или переводит фокус на другие элементы мышью, нажатием клавиш Enter,Tab. В первых случаях для инициирования события потери фокуса необходимо программно передать фокус другим элементам, а вот этого как раз сделать и нельзя - возникает ошибка с сообщением о невозможности в данный момент передать фокус другому элементу. Поэтому пришлось использовать в соответствующих процедурах On Error Resume Next, что не очень-то хорошо. В упрощенном варианте это стало выглядеть следующим образом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2007, 14:52 |
|
|
start [/forum/topic.php?fid=45&gotonew=1&tid=1653455]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
13ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 255ms |
total: | 422ms |
0 / 0 |