Главная страница
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.008 c
15-1276767929
ocean
2010-06-17 13:45
2010.09.12
Сценарий входа пользователя в AD


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


2-1276497223
tippa
2010-06-14 10:33
2010.09.12
про 2 потока и общий стринглист


15-1276725671
Кто б сомневался
2010-06-17 02:01
2010.09.12
Php проверка перед submit


2-1276964759
DiamondeX
2010-06-19 20:25
2010.09.12
Режим выбора пользователя