Как в событии Exit определить какой контрол берет фокус?

Программирование на Visual Basic for Applications
Евгений Д.
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 21.09.2004 (Вт) 17:32
Откуда: Москва

Как в событии Exit определить какой контрол берет фокус?

Сообщение Евгений Д. » 24.07.2006 (Пн) 18:53

Суть проблемы:
есть ComboBox со списком. Вводим в этот ComboBox текст. Если введенный текст найден, то давим Enter и по событию ComboBox_Exit добавляем найденный текст в ListBox. Если в ComboBox введенного текста нет, то все равно давим Enter и в ListBox добавляется введенный текст. При этом в ComboBox ввдеденный текст не очищается (для последующих нужд).

Есть кнопка, которая очищает обозначенный выше ListBox.
ComboBox, ListBox и кнопка входят в один фрейм.

А дальше голову сломал: при клике на кнопке, желая очистить ListBox, где бы не был фокус я попадаю на событие ComboBox_Exit и выполняю не нужный мне в данный момент кусок кода. Хуже того, я не понимаю, как я могу определить как я туда попал, потому что в событие кнопка_Click я попаду позднее.

Т.е. общая постановка вопроса следующая: как в событии Control_Exit мне определить контрол, который получит фокус?

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 24.07.2006 (Пн) 20:27

В ComboBox_Exit попадаешь, потому что при клике на кнопку ComboBox теряет фокус и фокус переходит на кнопку

Следовательно, идешь не правильным путем то ест ComboBox_Exit тебе не подходит нужно использовать другие события
или похуже путь, завести публик переменную, запоминать в нем текущие операции и анализировать его в событии ComboBox_Exit,
но лучше изменить подход

Евгений Д.
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 21.09.2004 (Вт) 17:32
Откуда: Москва

Сообщение Евгений Д. » 27.07.2006 (Чт) 11:48

Беру свои слова обратно: действительно нажатие на клавишу Enter можно отловить в событии KeyDown. И с поведением контролов во фрейме кое-что прояснилось: оказалось, что внутри фрейма своя нумерация TabIndex'ов, и при клике (как в моем случае) на кнопку, отрабатывался уход с контрола с TabIndex=0 (у меня это как раз и был злополучный ComboBox) и, соответственно, вызывалось событие Exit, когда это было мне не нужно. Пришлось заменить Exit на KeyDown и все контролы стали жить дружно :lol: .


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 51

    TopList