I have written a Fire Monkey (mobile phone) application that also runs on Windows. So far so good.
Although it is not recommended by Embarcadero, I also have been able to compile the Fire Monkey into a VCL project. They don't interact, apart from the VCL calling the main frame of the Fire Monkey app, and then receiving back control when all is complete.
It is a little ugly at the user interface end, in that the Fire Monkey app also appears on the windows task bar, even when it is not running.
Also when I tested it on Vista I get an exception on closing the VCL.
Therefore, following Embarcadero's recommendation, I have written a DLL interface that embodies the Fire Monkey component. However I am doing something wrong, because as soon as I carry out a task in a sub-unit referencing the main form I get a data exception.
uMMain in 'uMMain.pas',
uMAccess in 'uMAccess.pas',
uUnique in 'uUnique.pas';
procedure ShowMobile; stdcall export;
test := 'OK';
MM := TfMMain.Create(application);
test := 'Failed';
It passes through the above code without a worry, and in the main part of the App it works OK.
I have a couple of units that are called by the program. When the logic flows to those units in the DLL style operation the form fMMain is now nil to them. (It is OK when it runs as a stand-alone program.)
The simple work-around would be eliminate those units, but why is fMMain = nil in this situation?