Главная страница
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.011 c
2-1276721389
GanibalLector
2010-06-17 00:49
2010.09.12
TClientSocket в DLL


15-1273957893
NailMan
2010-05-16 01:11
2010.09.12
Свершилось чудо Маниту


15-1276860797
SD Software
2010-06-18 15:33
2010.09.12
Как скомпилировать драйвер


2-1276375219
AKE
2010-06-13 00:40
2010.09.12
Как получить координаты всех точек?


15-1276689705
AKE
2010-06-16 16:01
2010.09.12
Есть ли аналог TBitmap в Visual c++?