'nabend,
es gibt nicht zufällig ein Define für das im Projekt verwendete Framework?
Via
{$IFDEF MSWINDOWS/ANDROID/MACOS/IOS}
kann man zwar auf die Zielplattform prüfen, aber ob eine Windowsanwendung FMX oder
VCL benutzt, kann ich in einer
Unit irendwie nicht rausbekommen.
Grund:
eine nichtvisuelle Komponente, welche man auf eine
VCL oder FMX-Form legen kann.
Grundsätzlich geht das, aber was macht man, wenn man in der Komponente einen TTimer verwenden will?
Vcl.ExtCtrls oder Fmx.Types
Erst dachte ich, kein Problem, ich binde einfach ExtCtrls und Types ein und lass' über die definierten Namespaces entscheiden, da es beide Units beiden Frameworks gibt
und dann ist es mir egal, aus welcher
Unit der Timer nun kommt.
FMX:
Vcl.ExtCtrls, System.Types
VCL: Fmx.ExtCtrls, Fmx.Types
Leider klappt das bei ExtCtrls, aber nicht bei Types, denn System.Types,
Vcl.Types und Fmx.Types
Die einzige Lösung, welche ich bis jetzt fand, ist die Kompoente doppelt zu entwicklen, aber das ist doch auch keine Lösung.
Delphi-Quellcode:
//Fmx.MyClass.pas
GroupDescendentsWith(TMyClass,
Vcl.Controls.TControl);
//Vcl.MyClass.pas
GroupDescendentsWith(TMyClass, Fmx.Types.TControl);
Genauso wie den Timer selbst zu basteln auch nicht in Frage kommt. Oder in der
VCL dennoch versuchen direkt auf IFMXTimerService zu gehn.