Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.034 Beiträge
 
Delphi 12 Athens
 
#1

Compilerschalter für Framework

  Alt 9. Mai 2015, 18:05
Delphi-Version: XE7
'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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat