Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.09.12;
Скачать: CL | DM;

Вниз

TActiveForm и переход фокуса по TAB   Найти похожие ветки 

 
d_oleg ©   (2007-01-04 11:52) [0]

делаю activeX на основе TActiveForm, который включает в себя несколько DBGrid-ов, да пару кнопок. Все нормально регистрируется, подключаю его из вызывающей программы в TOLEControl и тут возникает проблема в передече управления этому activeX: в-первых, по TAB происходит передача фокуса либо самой TActiveForm (если не уазан ActiveControl) или этому самому ActiveControl, при повторном нажатии TAB происходит выход фокуса их ActiveX, как будто остальных компонентов на TActiveForm нету. Во-вторых, если фокус удается-таки передать в DBGrid, то поведение его "ненормально", такое ощущение, что обработка клавиатурных событий предварительно обрабатывается родительской формой, а DBGrid обрабатывает лишь "остатки": текст, например, в поле вводится, но обработка нажатий на стрелки не приводит к post, а выводит фокус из DBGrid.
Как победить?


 
С   (2007-01-04 12:26) [1]

Для этого у контейнера, наследника TOleControl, в который загружается Ваш ActiveForm, нужно перехватывать сообщение CN_KEYDOWN и в нем глушить сообщения от служебных клавиш. Это может выглядеть как-то так:

 if (Message.CharCode in [VK_TAB, VK_LEFT, VK_UP, VK_RIGHT, VK_DOWN])
 then Message.Result:=0 else inherited;

Но это не проходит бесследно. К сожалению я уже не помню подробностей, слишком давно это было. Нужно смотреть "по месту", тщательно тестировать код и, возможно, вводить более сложную логику в зависимости от конкретной ситуации.


 
d_oleg ©   (2007-01-04 13:45) [2]

Самое интересное, что если грузить в контейнер "чужие" activeX, к примеру от микрософта, то в них все функционирует нормально, т.е. фокус приходит в activeX и не "вылетает" оттуда по первому чиху.


 
С   (2007-01-04 17:23) [3]

>d_oleg ©   (04.01.07 13:45) [2]

И что?



Страницы: 1 вся ветка

Текущий архив: 2010.09.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.019 c
15-1275535977
Юрий Зотов
2010-06-03 07:32
2010.09.12
И снова смех сквозь слезы...


2-1276607756
ixen
2010-06-15 17:15
2010.09.12
Как закрыть программу в окне авторизации?


2-1274947026
Dzmitry
2010-05-27 11:57
2010.09.12
A call to an OS function failed


2-1276935710
caesar_88
2010-06-19 12:21
2010.09.12
Windows Служба USB устройства


2-1276392661
DROWSY
2010-06-13 05:31
2010.09.12
Если TIBDataSet - набор из нескольких связанных таблиц...