Есть ли простой способ разрешить вкладки между элементами управления не-VCL и VCL в форме Delphi?
У меня есть форма Delphi с кучей элементов управления VCL, таких как TButton и TCheckBox, и экземпляр текстового редактора Scintilla. Я хочу иметь возможность входить и выходить из текстового редактора, но похоже, что вкладки обрабатываются библиотекой VCL, а не Windows.
Я перешагнул через код, и похоже, что вкладки обрабатываются методами SelectNext и FindNextControl класса TWinControl. Эти методы работают с объектами TWinControl, но текстовый редактор не происходит от TWinControl, как TButton и TCheckbox.
Есть ли простой способ разрешить табуляцию между не VCL и VCL?
1 ответ
(сделал это вики-ответом, потому что Роб совершенно прав в своих комментариях выше, это просто извергает его)
Обработка клавиатуры для специальных символов / клавиш обрабатывается VCL довольно особым образом, и обход / расширение этого напрямую через Win API, безусловно, выполнимо, но нетривиально.
Было бы так же легко и откровенно более гибким в долгосрочной перспективе, если вы создадите пользовательскую оболочку компонента VCL вокруг элементов управления (используйте источник VCL в качестве руководства), на самом деле это не так сложно (возможно, немного утомительно), но Отключение будет огромным с точки зрения ремонтопригодности и повторного использования.
Редактировать:
И, конечно, вы можете просто использовать этот бесплатный Delphi Wrapper для редактора Scintilla.