5. Delphi XE5 und FireMonkey Delphi
XE5 und Cross-Platform-Entwicklung Delphi XE5 bietet nun das, was man sich gewünscht hat: Mit einer Code-Basis Programme für Windows, MAC, IOS und Android zu entwickeln. Inwieweit das tatsächlich für größere Projekte möglich ist und was zu beachten ist, dazu werde ich in einem der nächsten Blogbeiträge Ausführungen machen. Ich werde dazu mein Programm PC-Adreßzz!, dass derzeit erstellt ist für - Windows mit
Delphi 2007 auf die Delphi XE5-Lösung übertragen. Bei der obigen Aufzählung fällt natürlich auf, dass ich mit Delphi XE5 Linux und Windows Mobile (Phone) noch nicht bedienen kann. Aber man soll die Hoffnung ja nicht aufgeben, in der Delphi-Roadmap ist unter dem Stichwort "Beyond iOS & Android" zu finden, dass "Windows 8 ARM / RT" im Blickwinkel ist, ebenso "Linux Server, TBD" Delphi XE4 hatte ich mir natürlich auch schon geholt, aber da ich meine Programme einheitlich auf die 4 Plattformen (Windows, MAC, IOS, Android) übertragen wollte, hat es für mich nicht viel Sinn gemacht, mit XE4 wieder nur eine Teillösung zu machen. XE4 habe ich aber sehr intensiv genutzt um ein Windows-Projekt weiterzubringen (PixPower PD) und ich muss sagen, mich hat die Stabilität und die Geschwindigkeit für die Windows-Plattform echt überzeugt. Einen schnelleren Compiler hatte ich noch nie. Ich will mich in diesem Blog-Beitrag zunächst auf den Cross-Platform-Bereich Windows / MAC OS X beschränken. Zum einen, weil das die finanziell lohnendsten Bereiche sind. Denn für diese Programme kann man deutlich mehr Geld verlangen, als für IOS- oder Android-Programme. Vor allem kann man sie außerhalb eines App-Stores verkaufen. Aber andererseits auch - und das gebe ich offen zu - weil ich derzeit noch nicht viel Erfahrungen im "neuen" IOS und Android-Bereich habe. Das wird sich aber sicher bald ändern und dann gibt es hier auch Blog-Beiträge dazu. Delphi XE5
und Installation Delphi XE 5
und nutzbare MAC OS X-Versionen Übernahme
von XE3-Projekten Lösung war, die Styles-Komponente zu öffnen, "Alle entfernen" zu wählen und den Style neu von der Festplatte einzulesen. Offensichtlich sind an den Styles Änderungen vorgenommen worden, die Einfluss auf die Funktion der Komponenten haben. Die FMX-Styles finden Sie auf der Festplatte unter: C:\Program Files (x86)\Embarcadero\RAD Studio\12.0\Redist\styles\Fmx Danach war
wieder alles so, wie es sein sollte. Weitere Hindernisse: TLabel und TButton "unbekannt" Bereits mit Delphi XE4 hat es eine Neusortierung der Funktionen und Komponenten in den einzelnen FireMonkey-Units gegeben. Eine Beschreibung der Einzelheiten dazu finden Sie hier: http://docwiki.embarcadero.com/RADStudio/XE4/de/Umgestaltete_FireMonkey-Klassen_in_XE4 Button und Labels sind nun in der Unit FMX.StdCtrls verortet, diese müssen Sie daher unter "Uses" als Unit hinzufügen. Delphi ist während dessen übrigens etwas übereifrig und fügt dann automatisch weitere Units hinzu, teilweise doppelt. Wundern Sie sich dann also nicht über entsprechende Fehlermeldungen während der Kompilierung, sondern entfernen Sie dann einfach die doppelten Einträge. Außerdem hat das Programm für die Windows-Plattform gemeckert, dass "Application.mainform.handle" nicht kompatibel sei mit "TWindowHandle". Das konnte ich momentan nur mit einem Work-Around umgehen, indem ich hier als "Application.mainform.handle" einfach durch "0" ersetzt habe. Kann aber auch keine Dauerlösung sein. Um die "TFillTextFlags" im Zusammenhang mit der Druckfunktion nutzen zu können, musste ich die Unit "FMX.Graphics" einbinden, auch eine Folge der oben erwähnten Neuordnung. Wenn also irgendwann etwas als "unbekannt" angemeckert wird, denken Sie an diese Neusortierung und gehen auf die Suche und passen es entsprechend an. Problem des
OS-Menü-Eintrags Das funktioniert (evtl. schon auch ab XE4) nicht mehr in XE5, hier wird unter MAC OS X immer ein eigenes OS System-Menü erstellt, dass nur einen Eintrag enthält, nämlich den, um das Programm zu beenden. Das kann man aber mit einem Trick und einem Griff in die MAC-Systemfunktionen beheben. Aber erst hier noch mal zur grundsätzlichen Vorgehensweise: Ich will in meinem System-Menü-Eintrag "TEditor"nicht nur einen Befehl haben, um das Programm zu beenden. Nach Apple-Konvention gehört da auch die Info über das Programm rein. Und wenn vorhanden, auch ein Menübefehl für die Vornahme von Einstellungen für das Programm. Unter Windows findet man den "Über Programm..." - Eintrag üblicherweise im Hilfe-Menü. Nachfolgend ist gezeigt, wie das entsprechend geändert wird (die Unit "MacApi.Appkit" muss dazu unter Uses eingebunden werden): Nach den Änderungen muss das Menü neu erzeugt werden, das geschieht mit "MainMenu1.RecreateOSMenu" (nur zur Sicherheit, um Verwechslungen zu vermeiden: "MainMenu1" ist die FireMonkey-Komponente, die Variable "MainMenu" ist ein Pointer auf das Original vom MAC-OS-System verwalteten Menü). Dann erhalten wir aber im
Ergebnis einen doppelten Eintrag für "TEditor", einmal meiner
aus dem MainMenu1 und einmal von Delphi EXE5 automatisch erzeugten
Eintrag. "NSAPP :=
TNSApplication.Wrap (TNSApplication.OCClass.sharedApplication);" Wenn das funktioniert hat, rufen wir mit den folgenden Zeilen den ersten Eintrag ab, entfernen diesen und alles wird wie gewünscht unter MAC-OS X angezeigt: Hinweis: Irgendwo habe ich mal gelesen, dass das OS-Menü immer neu erstellt wird, wenn man einen Menü-Eintrag sichtbar oder unsichtbar stellt oder von Enabled auf Disabled. Das habe ich hier in einem Test jetzt nicht so feststellen können. Aber falls Sie doch einmal vor diesem Problem stehen sollten und das unerwünschte Menü sich wieder in den Vordergrund drängt, dann müssen Sie das, was ich hier in den Create-Event gepackt haben, einfach als eigene Prozedur erstellen. Die rufen Sie immer dann auf, wenn der gewünschte Zustand wieder hergestellt werden soll. So, die Umstellung des Projekts TEditor auf Delphi XE5 hat also nur wenige Stunden benötigt, gerade habe ich die neue Version zu Apple hochgeladen, "Waiting for Review" kann nun Stunden oder Tage bedeuten (das ist eindeutig der Nachteil des Vertriebs über den App-Store). |
Fazit Was nicht so schön ist, betrifft die teils mangelnde Rückwärtskompatibilität zwischen den einzelnen FireMonkey-Versionen. Wobei man aber andererseits sagen muss, dass der Aufwand nicht groß war, um das anzupassen. Was ich mir noch mehr wünsche, ist das ganz einfache Dinge mal erledigt werden. Dass z.B. eine "Hint-Funktion" für die FireMonkey-Komponenten angeboten wird. Oder dass ein TSpeedButton selber ein Image enthält, ohne dass man sich selber was basteln oder auf Drittanbieter zurückgreifen muss. Der Styles-Editor hat immer noch verschiedene Macken und bestimmte Komponenten-Attribute werden gar nicht dauerhaft gespeichert (z.B. "Helpkeyword", den möglichen String-Eintrag habe ich in Windows-Projekten für andere Zwecke genutzt). Ein paar Einträge zu Fehlern oder Dinge, die noch dringend benötigt werden, habe ich auch schon bei Quality-Central gemacht und ich werde mit Sicherheit auch noch ein paar weitere machen (meine Bitte wäre an die Leser des Blogs, dies auch zu tun, wenn der Hersteller die Fehler nicht kennt, wird er diese auch nicht ändern können). Mein Wunsch wäre, dass diese Meldungen auch tatsächlich und zügiger abgearbeitet werden. Insgesamt muss man aber sagen, dass die Möglichkeiten, die Delphi XE5 bietet, einmalig sind. Welche Entwicklungsumgebung bietet das schon an? Wenn wir es schaffen noch bestehende Ungereimtheiten zu beseitigen, wird das ein ganz großes Ding, womit wir Delphi-Entwickler ein wirklich mächtiges Werkzeug erhalten. Neues
FireMonkey Buch verfügbar Seit dem 10. November gibt es eine erste Version, die auf die Verwendung von XE4/XE5 angepasst ist. Hinweis 1: Da das existierende Buch für Delphi XE3 und FireMonkey 2 ja einige Sachverhalte von XE4 bzw. XE5 nicht abdeckt, habe ich den Preis auf 24,99 Euro gesenkt (wird in Amazon erst in einigen Stunden gültig sein, für den Erwerb der PDF-Datei im Direktdownload von meiner Seite per PayPal gilt er ab sofort). Für Anwender von XE3 jetzt eine gute Gelegenheit zuzugreifen. Hinweis 2: Auch das neue Buch wird 24,99 Euro kosten, vielleicht stellte der Preis von 39,-- Euro doch eine zu große Hemmschwelle für den einen oder anderen dar. Hinweis 3: Ist eigentlich mehr eine Bitte. Wenn mein Buch Ihnen als Leser eine Hilfe war, wäre ich dankbar, wenn Sie bei Amazon eine entsprechend positive Kritik abgeben könnten. Ohne das geht es kaum bei Amazon. |
Also, was ist Ihre Meinung zur Verwendung zu Delphi XE5 und FireMonkey, wie sind Ihre eigenen Erfahrungen? Wenn Sie Anregungen zu Themen haben, lassen Sie es mich gerne wissen. Meine Mailadresse finden Sie oben auf der Seite unter dem Link "Anbieterkennzeichnung & Kontakt". Über meinen Hastasoft-Twitter Account werde ich posten, wenn neue Blogbeiträge zur Verfügung stehen. Wenn Sie wollen, klinken Sie sich dort ein (siehe meine Hastasoft-Seite). Viel Erfolg mit Delphi und FireMonkey! Harry Stahl, 08.11.2013 |