<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-NZ link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>From my early playing with FireMonkey I could not use Messages at all, at least this is what I found when trying to port an app written in Delphi+VGScene (where Firemonkey originated from).<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>I have threads working with a REST Service for data sync and without messages basically have to rethink the lot, not to mention, Firemonkey basically broke the entire app anyway. <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>And lets not mention that the editors in FM are dreadful, I have several user that hate the editors (Tcombobox, Tmemo, TEdit)  and have done a lot of tweaking to get the VGScene editors working correctly, but these changes will not work at all with FM. Oh well, looks like onto c# and maybe Silverlight (or HTML 5) for the nice visuals I have managed with VGScene, and a complete rewrite for iOS/OSX.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>It looked good in the early days, I’ve spent over 12 months intensive development on my latest project, and looks like I’ll be re-doing it again next year.. at least I’ll have a version 1 that will allow me to model the next build on and gain some knowledge with.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Jason<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> delphi-bounces@listserver.123.net.nz [mailto:delphi-bounces@listserver.123.net.nz] <b>On Behalf Of </b>Jolyon Smith<br><b>Sent:</b> Tuesday, 15 November 2011 11:31 a.m.<br><b>To:</b> NZ Borland Developers Group - Delphi List<br><b>Subject:</b> Re: [DUG] Delphi Update<o:p></o:p></span></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>@David<o:p></o:p></p><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal>I don't have specific technical issues with FireMonkey as such, just a general feeling that it's too niche in an already niche area.<o:p></o:p></p></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal>When I am developing code for OS X I am going to run into problems that I need to solve and areas of the Cocoa framework that I need to learn about. &nbsp;The bast majority of samples and other sources of assistance out there will be assuming &quot;native&quot; Cocoa development, and access to native facilities in the framework. &nbsp;There will be precious few such sources of assistance that can be directly applied to FireMonkey code that aren't written specifically with FireMonkey in mind.<o:p></o:p></p></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal>Things like &quot;Synchronise&quot; in multi-threaded code for example.<o:p></o:p></p></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal>FireMonkey incorporates the same complicated and potentially fragile Synchronise mechanism that the VCL is hobbled by, but both Windows and OS X have native mechanisms for ensuring that code is performed on the main application thread. &nbsp;FireMonkey doesn't use either of those mechanisms on Windows or OS X.<o:p></o:p></p></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal>On Windows, I have my own &quot;native&quot; Synchronise implementation (create a form in the main thread and send it messages to be processed simply as part of the message queue - much simpler, more lightweight and more reliable than the VCL &quot;Synchronise&quot;mechanism).<o:p></o:p></p></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal>On OS X the equivalent would be even more simple: &nbsp;just invoke &quot;performSelectorOnMainThread&quot;, but as far as I have been able to tell, there is quite simply no way to get at or utilise this mechanism from Delphi.<o:p></o:p></p></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal>To an extent this is a separate question from whether or not a generic, non-platform specific GUI layer was the preferable/more correct choice rather than creating a visual controls framework specific for each platform, but equally a non-platform bound approach intrinsically favours that generic solution since platform binding in the GUI Controls typically necessitates a much closer affinity to the underlying platform. &nbsp;In the case of the likes of OS X that means the Cocoa runtime.<o:p></o:p></p></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal>Compare and contrast the two approaches to OS X support undertaken in FPC<o:p></o:p></p></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal>First, a runtime &quot;bridge&quot; between the FPC runtime and the underlying platform runtime:<o:p></o:p></p></div><div><p class=MsoNormal>&nbsp;<o:p></o:p></p></div><div><p class=MsoNormal><a href="http://wiki.freepascal.org/PasCocoa#The_information_on_this_page_is_legacy_and_only_available_for_historical_purposes._Please_see_FPC_PasCocoa_for_current_information">http://wiki.freepascal.org/PasCocoa#The_information_on_this_page_is_legacy_and_only_available_for_historical_purposes._Please_see_FPC_PasCocoa_for_current_information</a>.<o:p></o:p></p></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal>This first approach will be very familiar to anyone who has done any OS X coding in Delphi, with or without FireMonkey.<o:p></o:p></p></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal>Now look at what replaced that approach:<o:p></o:p></p></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal><a href="http://wiki.freepascal.org/FPC_PasCocoa">http://wiki.freepascal.org/FPC_PasCocoa</a><o:p></o:p></p></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal>i.e. Language extensions that bring the platform runtime and concepts right into the language, in exactly the same way that the &quot;message&quot; and &quot;automated&quot; keywords do/did so successfully on Windows (and in fact, in FPC they managed to re-purpose that &quot;message&quot; keyword itself!).<o:p></o:p></p></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal>Android ... ?<o:p></o:p></p></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal>From the little that I have experimented with Android so far, I simply cannot see how they can extend the FireMonkey and platform bridge approach to Android at all successfully, never mind emitting the write code from the compiler back end.<o:p></o:p></p></div></div></body></html>