As you probably know, VCL is incompatible with FireMonkey. What does this mean? Embarcadero explains this in the DocWiki:
However, there is still something that can be done to use FireMonkey functionalities in a VCL application.
It's very probable that a VCL application could benefit from using some components or functionalities that are only present in the FireMonkey framework. So, what could be the solution? One solution is to create a Windows DLL that contains all the FireMonkey code and exposes a set of raw functions to access them. Then, the VCL application can load the DLL and call the exposed functions. Let's see this in action.
This recipe requires familiarity with some advanced Delphi concepts, so there will not be a step-by-step section; I'll only talk about the project code.