I had a similar problem. I solved this by intercepting the tab key in the host form and not allowing it to handle the keystroke. The following code worked in my case:
procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY; ... procedure TForm1.CMDialogKey(var Message: TCMDialogKey); begin if Message.CharCode = VK_TAB then // ignore tabs and allow the TClrControl to handle them else inherited; end;
In my case, TClrControl aligns with the client and spans the entire form, so this may not be entirely correct in your situation if you mix VCL and .NET controls.
Jason source share