Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Corba";
Текущий архив: 2010.09.12;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "Corba";
Текущий архив: 2010.09.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.005 c
2-1276760149
john-s
2010-06-17 11:35
2010.09.12
Не могу добавить данные типа float в mysql


2-1276544773
Цукор5
2010-06-14 23:46
2010.09.12
чтение сокета. ServerSocket1ClientRead


2-1276338216
forNeXt-13
2010-06-12 14:23
2010.09.12
Как сделать ValueListEditor в возможностью выбора


15-1274256143
12
2010-05-19 12:02
2010.09.12
Помогите пропатчить dll. Обход ошибочного кода. Не взлом!


15-1276599769
12
2010-06-15 15:02
2010.09.12
mssql триггер, совсем забыл :(. Так правильно будет?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский