I know that windowless control is not magic . A windowless control may have input focus (such as Internet Explorer). The input focus is nothing more than drawing:
and when the user starts to press keys, reacting accordingly. You know that keystrokes are for this focused control because this control has focus.
In the case of my window (Windows®), I should know that my child windowless control (let's pretend it is a descendant of TGraphicControl) receives keyboard events. So during my OnKeyDown , OnChar , OnKeyUp I would have to pretend that they are going to my child windowless control.
What can I do, but it's a pain.
But then the user will probably want to use the Tab navigation, and I will have to somehow intercept the usual Delphi processing the tab control order and cling to myself to say that this thing is the next (and previous) in the tab order.
What can I do, but it's a pain.
And there is ActiveControl that understands nothing but TWinControl . So if Delphi ever tries to figure out who it is focused on, it will go crazy. So I need to have an alternative implementation of ActiveControl.
What can I do, but it's a pain.
In other words: is it too much work? Am I struggling with everything Delphi has, and everything so that I have several dozen windowless controls accessible from the keyboard? Delphi designers never thought about using interactive controls without windows, and if I try to work with them now, will I just get stuck in a hearthlocker ?
Delphi gave me the opportunity to help me willingly, but I chose the path of pain.
Some further explanation of windowless controls is needed.
Not every control you interact with must be a Windows control. It is possible to focus and transfer keyboard input to a non-Windows control.
For example, almost every control that you see in an Internet Explorer browser window is a windowless item. In the next screenshot, you see the edit control that you can enter, and the button that (in this screenshot) has focus:

You can see the dashed focus rectangle, and the button is bluish (which on Windows indicates that it has focus).
If I pressed Spacebar when the Google Search button was in focus, it would have pressed the button. This works because Microsoft has written a whole library of widget controls. These controls look (almost) exactly the same as regular general controls - they are almost exact clones of the general Windows controls right up to the themes used.
Mozilla Firefox and Google Chrome also use the widget control library. They do not use Microsoft's built-in window controls, but use a library of graphical interactive widgets without windows.
And if you have a suitable development environment, then windowless widgets work just like "normal" window controls. GTK + is a widget library, and Glade is an IDE that allows you to place controls in this widget library.
I don’t know in which development environment Firefox, Chrome or Blender were created, but their widgets support windowless controls.
So now to my question.
If I'm not mistaken, it seems to me that although Delphi supports the base TControl (which has width, height, and can draw itself), it cannot get keyboard focus. It seems to me that Borland never designed Delphi VCL as a universal library of widgets. The only evidence I have to confirm is that Form ActiveControl is a TWinControl:
property ActiveControl: TWinControl;
This does not mean that Delphi can or should be limited to windowed controls. The VCL widget library can be expanded to support focusing on windowless controls.
But maybe Delphi already supports windowless controls , and I just don't get it? Does Delphi already have a focus support mechanism on TControl ? But I'm a smart enough guy, and I'm sure Delphi VCL cannot do what other widget libraries can do.
What then leads to another question: how much work will be done on the forms of the subclass and such to support it? Is there someone else, perhaps someone in TeamB, who is much smarter than me, who have already tried this, and came to the conclusion that this is impossible ?
Now I immediately ask if an attempt to add control support without windows is damn impossible (that is, useless), so that I do not waste weeks on it. I am trying to use the knowledge of the Delphi developer community.
I ask a question.