Как захватить проглоченную клавишу Tab при использовании ActiveX, Delphi и DevExpress?
Это очень специфическая проблема. У меня есть элемент управления ActiveX C#, встроенный в форму Delphi7. Клавиша Tab проглатывается, поэтому вкладка из элемента управления в элемент управления не работает в самом нижнем слое.
Слои Delphi7 (сверху вниз):
- Форма Delphi
- Управление вкладками DevExpress (TcxPageControl)
- Встроенный ActiveX
Слои ActiveX (сверху вниз):
- Элемент управления, который наследует элемент управления DevExpress (XtraUserControl). Этот элемент управления является видимым объектом COM, который встроен в форму Delphi.
- Панель DevExpress (PanelControl)
- Управление вкладками DevExpress (XtraTabControl)
- Страница вкладки DevExpress (XtraTabPage)
- DevExpress Textbox (TextEdit)
Вкладка из текстового поля в текстовое поле не работает. События PreviewKeyDown не запускаются со страницы вкладки ActiveX и вниз. Событие KeyDown срабатывает на элементе управления вкладки ActiveX, когда я нажимаю клавишу TAB, но это событие не существует на более низких уровнях.
Вкладка работает нормально, если я поместил элемент управления ActiveX в форму C# со всеми теми же слоями вместо Dephi7.
Форма Delphi7 содержит этот код, который позволяет работать с вкладками в других встроенных элементах управления ActiveX:
keybd_event(VK_TAB, 0, 0, 0);
Application.ProcessMessages;
Я встраиваю элемент управления в код так же, как я делал это множество других раз с другими элементами управления ActiveX (которые все работают).
Я думаю, что существует слишком много слоев, и почему-то клавиша Tab проглатывается средним слоем. Как бы я работал с вкладками на нижнем слое?