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


4-1239990492
KiLLiR
2009-04-17 21:48
2010.09.12
Печать изображения в ScrollBox


2-1276854352
terra
2010-06-18 13:45
2010.09.12
как заблокировать колонки в StringGrid


2-1277100140
Mishenka
2010-06-21 10:02
2010.09.12
Откуда берутся надписи в стандартных компонентах?


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