A little bit about FireMonkey and Delphi XE2

Let's share the knowledge with your friends

FireMonkey is going to be a whole new world of possibilities for Delphi and C++Builder developers. The platform itself is flexible, customizable and multi-platform, all components behave the same on Windows and Mac. In this post I will give you a general idea of some very powerful concepts related with components in FireMonkey, during the RAD Studio XE2 World Tour you will see much more.

Components in FireMonkey are containers; it means you can embed any component inside any other component. Just to give you an idea, the Button component is composed of 9 components. When together, they look and behave like a Button, let’s see how it works.

[ilink style=”tick”]Starts with a TLayout component, which helps to organize all of the controls[/ilink]
[ilink style=”tick”]Three TRectangle are responsible for the button look and feel, like: border, background and foreground color[/ilink]
[ilink style=”tick”]A Label represents the Button text[/ilink]
[ilink style=”tick”]And ends with four components, two for animation and other two for effects. Why effects and animations? Animations will happen when you move the mouse over/out the button, effects will happen when button is pressed or has a focus, the glow effect is responsible for that.[/ilink]

As you can see, a number of different features has been used to create a button, this is what happen with all of FireMonkey components.

And one more think, components’ look and feel can be changed and reused using Styles. Imagine a web page that use CSS, you change the web page look and feel just updating the CSS, right? In FireMonkey is the same, instead CSS you will use Styles to change the application look and feel.

Apps and components look and work properly on the respective native platform, but you can also style them to look or behave differently. below an example.

More to come, stay tuned to this blog, other Embarcadero blogs and Embarcadero web site.

[button link=”http://www.embarcadero.com/world-tour” size=”large” style=”note” color=”red” border=”white” text=”light” window=”yes”]Register today for the RAD Studio XE2 World Tour[/button]


Let's share the knowledge with your friends
62 replies
  1. zeroc8
    zeroc8 says:

    What technology is this based on? OpenGL? If yes, which version?
    Also, will this be available for Linux later on?
    Reason I’m asking is because I’d love to use this on an embedded device.
    ARM would be perfect, but Atom is fine too.

    Reply
  2. Steve Maughan
    Steve Maughan says:

    Looks amazing! Here are a few questions:

    I assume Firemonkey applications are native – can you confirm?
    Will there be a Mac IDE?
    If not – how will debugging work?

    Thanks, Steve

    Reply
  3. DelfiPhan
    DelfiPhan says:

    It is important to stick to Windows styles as far as possible. Because a user may select a theme that has poor contrast with the colors you selected.

    Reply
  4. David I
    David I says:

    FireMonkey apps are completely native ccode.

    3rd party technology partners are working on FireMonkey component and tool support.

    We will ship with several style files you can choose including Windows and Macintosh style. And you can create, share, sell custom styles too,

    Reply
  5. David I
    David I says:

    Regarding graphics rendering:

    If you use HD forms and components on Windows – we use Direct2D
    if you use 3D forms and components on Windows – we use Direct3D
    On Macintosh HD and 3D – we use OpenGL

    Reply
  6. David I
    David I says:

    RAD Studio XE2 IDE runs on windows and can cross compile (using our compilers) to OS X. You install a small Platform Assistant on the Macintosh. Then when you hit run or run with debug – the executable is sent to the Mac (or you can copy it) and debugging starts. Similar but different implementation to our Remote Debugging that has been available for years for the IDE.

    For my configuration – I have a MacBook Pro and run VMWare Fusion 3.1.3 with Windows 64-bit ultimate as a guest OS. Some R&D team members have a Mac Mini sitting along side their PC.

    Reply
  7. David M
    David M says:

    Looks great! I’ve been hoping for Delphi for the Mac (and C++ Builder too!) for a long time.

    One thing I’m worried about is the native feel of the controls, especially on the Mac. Are the styles implemented via Cocoa? Ie, is it using the system’s rendering or even better the system’s controls under the hood?

    I’d really like to see a screenshot or two of the Windows and OSX themes, if you’re able to post them.

    Reply
    • Andreano Lanusse
      Andreano Lanusse says:

      Hi David M,

      I’m glad you like. Answering your questions. FireMonkey render all components through OpenGL on Mac and apply the styles, for Windows it will use Direct2D for HD apps, and Direct3D for 3D apps.

      Yes, I will publish some screenshots of the Windows and OSX styles. This one you see on this post is the Dark and iOS styles 🙂

      Reply
  8. David M
    David M says:

    Hi Andreano,

    Thanks – I’d be very interested.

    What I meant about rendering was that although it renders through OpenGL or Direct2D/3D, was whether the style code that generated the underlying images is implemented by hooking into the native system, or if it’s completely emulated. For example, I’d expect an OSX style running on Windows to just copy the look, but the best situation for an OSX style when running on OSX would be to use Cocoa to generated the control bitmaps, or even better for standard controls to instantiate actual Cocoa controls inside the FireMonkey control classes.

    Or, is it possible to create Cocoa windows and use a mix of Cocoa controls and FireMonkey controls hosted in the same window? Can you link to Objective-C code easily, or can you even mix the two languages in a project, handing over to Apple’s compiler for the Objective-C elements?

    I’m afraid I’ve got heaps of questions – take it as a sign of how excited I am Delphi’s finally arrived for the Mac 🙂

    By the way, do you know if there’ll be a Starter edition of XE2? My work’s unlikely to upgrade from 2010 until the 64-bit C++ compiler comes out, but I personally would like to install it at home and Starter seems more suitable for at-home hobbyist (I’m only a professional at work!) playing around sort of use.

    Reply
  9. Guest
    Guest says:

    You should be prepared to support the new Windows Runtime framework in Windows vNext.
    Its based on COM vNext and uses Xaml, supports native C++ RAD UI development.

    Reply
  10. Mauro
    Mauro says:

    David,
    How work this advanced draw under Remote Desktop and Terminal Server ?
    is very slow ?

    >>If you use HD forms and components on Windows – we use Direct2D
    >if you use 3D forms and components on Windows – we use Direct3D
    >>On Macintosh HD and 3D – we use OpenGL

    Reply
  11. Tukae
    Tukae says:

    I think this is going to be amazing new GUI for the world of Desktop apps. Keep up brothers, sisters, uncle, and auty.

    But how can is it going to possible to deployed to 3rd party an app for Mac OSX users?

    Reply
  12. Daniel Luyo
    Daniel Luyo says:

    Fantastic news is Firemonkey! and support for Mac even better.

    One question: if Firemonkeys uses Direct2D and since this is available only for Windows 7 and Windows Server 2008 (and also Vista with a Platform Update Supplement) it won’t run on previous plataforms? said XP?

    Daniel

    Reply
  13. Michael Swindell
    Michael Swindell says:

    >> Or, is it possible to create Cocoa windows and use a mix of Cocoa controls and FireMonkey
    >> controls hosted in the same window?

    FireMonkey client area controls are rendered by OpenGL on Mac, but appear and work just like Cocoa controls – or however you want them to. There are many different Cocoa UI styles in OSX apps, and Firemonkey can render any of them – including iTunes, or Prokit which is an Apple UI style for Pro apps like Final Cut, not available to devs via Cocoa. Windows are Cocoa Windows and the client areas and all user controls are rendered by OpenGL in HD(2D) or 3D. Menus are std and rendered by Cocoa in the menu bar, and common dialogs are rendered by Cocoa. If the “true OSX” look isn’t for you, you’re welcome to use any included Style, download a custom style, or create your own custom style.

    Reply
  14. Michael Swindell
    Michael Swindell says:

    >> What technology is this based on? OpenGL? If yes, which version?

    HD and 3D rendering on Mac is OpenGL, and Direct2D/3D on Windows.

    >> Also, will this be available for Linux later on?

    We do plan Linux and Android. But no eta yet until we get Win/OSX/iOS out. We would also like to provide language bindings for other languages.

    >> ARM would be perfect, but Atom is fine too.

    Today you can use FPC for ARM and Delphi compiler for Atom.

    Reply
  15. Michael Swindell
    Michael Swindell says:

    >> But how can is it going to possible to deployed to 3rd party an app for Mac OSX users?

    Developer requires a PC and a Mac (or Mac with VM running Windows). You will develop on Windows, and use the platform assistant (PA running on your Mac) to compile natively to your Mac and the PA handles debugging communication between the Mac and your IDE running on Windows. Delphi (or C++Builder) and Firemonkey create compiled stand alone OSX executables that you can sell/distribute to your users. They are native Mac apps. They “copy install” and run like any other Mac app, or you can use a Mac installer if you like.

    Reply
  16. Ian marsh
    Ian marsh says:

    Where can I find some documentation on building my first firemonkey app? I tried a couple of days ago and I got an error message saying no .res file.

    Reply
  17. حامد
    حامد says:

    Hi mr Andreano Lanusse
    i never think FireMonkey does’nt support RTL mode:(
    please add that to your next roadmap. because my fellows can’t use that 🙁
    my country has 76 million inhabitants!!
    thank you for you’r trying

    Reply
    • Andreano Lanusse
      Andreano Lanusse says:

      Yes you can use FireMonkey and RTL, the post you mention talks about bi-directional support, which is supported by the framework, we need to improve the RTL support and bi-directional text, we are aware of that. This is not something that will block you to use FireMonkey.

      Reply

Trackbacks & Pingbacks

  1. […] about the cross-platform compilers, FireMonkey, writing iOS apps in Delphi, and other amazing things (and believe me, they are amazing), but there […]

  2. […] راجع به Firemonkey و دلفی XE2 آبان ۱۱ دسته‌بندی نشده XE2 03Aug2011 55 Comments Categories:DelphiTags: C++Builder, Delphi, FireMonkey [Translate] Tweet 9 […]

  3. […] aanpassen (bijvoorbeeld een roterende video, om maar iets geks te noemen). Standaard worden een aantal (5?) “styles” meegeleverd, die gebruik maken van dit principe. Zelf heb ik als voorbeeld de X van een checkbox veranderd in […]

  4. […] been quite a bit written about the cross-platform compilers, FireMonkey, writing iOS apps in Delphi, and other amazing things (and believe me, they are amazing), but there […]

  5. […] Der Orignial-Artikel stammt von Andreano Lanusse. […]

  6. […] pregunta se caía de madura, habrá soporte en esta versión? Asi que le hice la pregunta al propio Andreano Lanusse y la respuesta fue: Cases where Direct2D is not supported, like Win XP FireMonkey will use […]

  7. […] A little bit about FireMonkey and Delphi XE2 […]

  8. […] FireMonkey tiene una pinta excelente. […]

  9. […] Lanusse ha publicado un blog con más detalles interesantes y hasta un par de screenshoots. Por lo que yo entiendo con Firemonkey […]

  10. […] Embarcadero’s Andreano Lanusse has posted more details about FireMonkey. window.fbAsyncInit = function() { FB.init({appId: "145148222188805", status: true, cookie: true, […]

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.