Как захватить проглоченную клавишу Tab при использовании ActiveX, Delphi и DevExpress?

Это очень специфическая проблема. У меня есть элемент управления ActiveX C#, встроенный в форму Delphi7. Клавиша Tab проглатывается, поэтому вкладка из элемента управления в элемент управления не работает в самом нижнем слое.

Слои Delphi7 (сверху вниз):

  1. Форма Delphi
  2. Управление вкладками DevExpress (TcxPageControl)
  3. Встроенный ActiveX

Слои ActiveX (сверху вниз):

  1. Элемент управления, который наследует элемент управления DevExpress (XtraUserControl). Этот элемент управления является видимым объектом COM, который встроен в форму Delphi.
  2. Панель DevExpress (PanelControl)
  3. Управление вкладками DevExpress (XtraTabControl)
  4. Страница вкладки DevExpress (XtraTabPage)
  5. DevExpress Textbox (TextEdit)

Вкладка из текстового поля в текстовое поле не работает. События PreviewKeyDown не запускаются со страницы вкладки ActiveX и вниз. Событие KeyDown срабатывает на элементе управления вкладки ActiveX, когда я нажимаю клавишу TAB, но это событие не существует на более низких уровнях.

Вкладка работает нормально, если я поместил элемент управления ActiveX в форму C# со всеми теми же слоями вместо Dephi7.

Форма Delphi7 содержит этот код, который позволяет работать с вкладками в других встроенных элементах управления ActiveX:

keybd_event(VK_TAB, 0, 0, 0);
Application.ProcessMessages;

Я встраиваю элемент управления в код так же, как я делал это множество других раз с другими элементами управления ActiveX (которые все работают).

Я думаю, что существует слишком много слоев, и почему-то клавиша Tab проглатывается средним слоем. Как бы я работал с вкладками на нижнем слое?

0 ответов

Другие вопросы по тегам