Страница 1 из 1

Навигация по Tab между разными ActiveX формами

Добавлено: 15 фев 2008, 12:52
Пабло
Добрый день!

Исходные данные: Есть стандартная форма(TMyForm) с парочкой TEdit и парочкой ActiveX форм. При переключении между контролами по Tab, как только попадаю в ActiveX форму курсор обратно по Tab в следующую ActiveX форму не переходит, он остается в предыдущей ActiveX форме и благополучно циклично переключается между ее контролами.

Вопрос: Есть у кого-нить идеи на тему как сделать так чтобы по табуляции можно было перескакивать из одной ActiveX формы в другую?

Re: Навигация по Tab между разными ActiveX формами

Добавлено: 15 фев 2008, 17:41
BBB
А по Ctrl+TAB ?

Re: Навигация по Tab между разными ActiveX формами

Добавлено: 15 фев 2008, 17:53
Пабло
Да там разницы нет, что по Tab что по Ctrl+Tab, курсор просто бегает по контролам внутри ActiveX формы и все.

Re: Навигация по Tab между разными ActiveX формами

Добавлено: 28 фев 2008, 10:16
Пабло
Может у кого-нибудь все-таки есть соображения по этому поводу?

Re: Навигация по Tab между разными ActiveX формами

Добавлено: 21 мар 2008, 13:57
Пабло
Позвольте еще разок поднять тему... надеюсь на ваши советы!

Исходные данные: есть форма(MyForm:TForm), на ней лежать Edit1:TEdit, Edit2:TEdit и моя ActiveX форма AXForm:TActiveFormX. На AXForm, лежат три компонента TEdit: Edit3, Edit4, Edit5.

Задача: обеспечить переключение между елементами Edit1, Edit2, Edit3, Edit4, Edit5 по Tab.

Если создать два проекта, один из которых будет реализовывать ActiveX форму, а второй приложение с формой MyForm, то по умолчанию навигация по Tab будет работать следующем порядке: Edit1, Edit2, Edit3, Edit1, Edit2, ... т.е. попасть с помощью Tab на элементы Edit4 и Edit5 никак не получится. Так происходит потому что ActiveX форма не обрабатывает нажатие клавишы Tab. Для того чтобы она начала это делать, нужно перекрыть WndProc ActiveX формы и в ней выставлять result=1 для сообщения CM_WANTSPECIALKEY. Но как только я так делаю, появляется новый баг, а именно попадай по клавише Tab в ActiveX форму, я больше из этой формы по клавише Tab выйти не смогу. Т.е. навигация по Tab будет работать в следующем порядке: Edit1, Edit2, Edit3, Edit4, Edit5, Edit3, Edit4, Edit5,...

Пробовал сделать так, чтобы как только по клавише Tab я дохожу до последнего элемента ActiveX формы, то на последующие события CM_WANTSPECIALKEY устанавливать result в 0. Тогда обработка клавиши Tab ActiveX формой прекращается и начинается обработка клавиши Tab в главной формы. НО, дело в том что как только я попадаю в ActiveX форму второй раз, мне нужно установить курсор опять на Edit3, но непонятно условие по которому мне нужно это сделать...

Есть идеи?

Re: Навигация по Tab между разными ActiveX формами

Добавлено: 15 май 2008, 07:04
Dr_Grizzly
Если на родительскую форму бросить Таймер, и отслеживать фокус и нажатие клавиши Таb то думаю должно получится, там ты сможешь как тебе угодно управлять фокусом. На крайняк, можно бросить два таймера, на форму и активХ, и когда на первой форме фокус дошел до последнего едита и была нажата клавиша ТаB то переключать на активХ на первый едит, и включать его таймер, в нем картина та же самая только наоборот.

Re: Навигация по Tab между разными ActiveX формами

Добавлено: 30 май 2008, 10:13
Пабло
Не совсем понял зачем нужен таймер, но в любом случае такой вариант не подходит, нужно сделать так чтобы это работало для всех ActiveX, вне зависимости есть там таймер или нет.
Можно конечно попробовать повесить хук на нажатие клавиши Tab и попробовать с помощью API перебирать окна и смотреть куда можно далее перевести фокус.