FireMonkey

Last updated
FireMonkey
Original author(s) Embarcadero Technologies (2011)
Developer(s) Embarcadero Technologies
Written in Delphi
Operating system Cross-platform (Windows, macOS, iOS, Android, Linux)
Type GUI, RTL
License Commercial proprietary license
Website www.embarcadero.com/products/rad-studio

FireMonkey (abbreviated FMX) is a cross-platform GUI framework developed by Embarcadero Technologies for use in Delphi, C++Builder or Python, using Object Pascal, C++ or Python to build cross platform applications for Windows, macOS, iOS, and Android. A 3rd party library, FMX Linux, enables the building of FireMonkey applications on Linux.

Contents

History

FireMonkey is based on VGScene, which was designed by Eugene Kryukov of KSDev from Ulan-Ude, Russia [1] as a next generation vector-based GUI. In 2011, VGScene was sold to the American company Embarcadero Technologies. Kryukov continued to be involved in the development of FireMonkey. Along with the traditional Windows only Visual Component Library (VCL), the cross-platform FireMonkey framework is included as part of Delphi, C++Builder and RAD Studio since version XE2. FireMonkey started out as a vector based UI framework, but evolved to be a bitmap or raster based UI [2] framework to give greater control of the look to match target platform appearances.

In 2021, FireMonkey for Python was released by Embarcadero, which was designed by Lucas Moura Belo. FireMonkey for Python is a natively compiled Python module powered by the Python4Delphi library. It gives Python developers access to the FireMonkey GUI framework and is freely redistributable. It fully supports Windows, MacOS, Linux, and Android GUI development.

Overview

FireMonkey is a cross-platform UI framework, and allows developers to create user interfaces that run on Windows, macOS, iOS and Android. It is written to use the GPU where possible, and applications take advantage of the hardware acceleration features available in Direct2D on Windows Vista, Windows 7, Windows 8 and Windows 10, OpenGL on macOS, OpenGL ES on iOS and Android, and on Windows platforms where Direct2D is not available (Windows XP for example) it falls back to GDI+.

Applications and interfaces developed with FireMonkey are separated into two categories, HD and 3D. [2] An HD application is a traditional two-dimensional interface; that is, UI elements on the screen. It is referred to as HD because FireMonkey utilizes multi-resolution bitmaps in its dynamic style system to take advantage of high-DPI displays. The second type, a 3D interface, provides a 3D scene environment useful for developing visualisations. The two can be freely mixed, with 2D elements (normal UI controls such as buttons) in a 3D scene, either as an overlay or in the 3D space, and 3D scenes integrated into the normal 2D "HD" interface. The framework has inbuilt support for effects (such as blurs and glows, as well as others) and animation, allowing modern WPF-style fluid interfaces to be easily built. It also supports native themes, so that a FireMonkey application can look very close to native on each platform. Native controls can be used on Windows, macOS, iOS and Android through both third-party libraries [3] and the ControlType property. [4]

FireMonkey is not only a visual framework but a full software development framework, and retains many features available with VCL. The major differences are: [5]

Due to the framework being cross-platform compatible, the same source code and form design can be used to deploy to the various platforms it supports. It natively supports 32-bit and 64-bit executables on Windows, 32-bit executables on macOS, 32-bit and 64-bit executables on iOS, and 32-bit and 64-bit executables on Android. [6] FireMonkey includes platform services that adapt the user interface to the correct behavior and appearance on each target platform.

Since its introduction in XE2, there have been numerous improvements in many areas of the framework and it is being actively developed and improved. For example, macOS development is integrated tightly into the IDE, requiring a Mac only for deployment. Numerous components such as sensors, touch and GPS have been added, especially useful for those developing mobile apps. There have been significant performance and underlying tech improvements, too.

Features

Graphics

FireMonkey uses hardware acceleration when available on Windows, macOS, iOS, and Android. Direct2D or OpenGL can be used on Windows Vista, Windows 7, Windows 8 and Windows 10. On Windows platforms where Direct2D is not available (Windows XP for example) it falls back to GDI+. OpenGL is used on macOS. OpenGL ES is used on iOS and Android.

Styles

All controls in FireMonkey are styleable via the styling system. This is accomplished by attaching a TStyleBook to the form, and a style is loaded and applied to the form. On some platforms certain controls can also be set to use a OS provided control implementation in contrast to the self drawn Firemonkey version. This sometimes adds further features while removing some features provided by Firemonkey's own implementation.

Platform Services

In addition to visual components, FireMonkey provides a loosely coupled way of accessing platform specific features independent of the platform. This also shows up as platform default behaviors. For example the TabPosition of the TTabControl has a property value of PlatformDefault that moves the tabs to the top on Android and the bottom on iOS automatically to be in line with the design guidelines for those platforms.

Related Research Articles

In computing, cross-platform software is computer software that is designed to work in several computing platforms. Some cross-platform software requires a separate build for each platform, but some can be directly run on any platform without special preparation, being written in an interpreted language or compiled to portable bytecode for which the interpreters or run-time packages are common or standard components of all supported platforms.

C++Builder is a rapid application development (RAD) environment for developing software in the C++ programming language. Originally developed by Borland, as of 2009 it is owned by Embarcadero Technologies, a subsidiary of Idera. C++Builder can compile apps for Windows, iOS, macOS, and Android. It includes tools that allow drag-and-drop visual development, making programming easier by incorporating a WYSIWYG graphical user interface builder.

The Visual Component Library (VCL) is a visual component-based object-oriented framework for developing the user interface of Microsoft Windows applications. It is written in Object Pascal.

Component Library for Cross Platform (CLX), is a cross-platform visual component-based framework for developing Microsoft Windows and Linux applications. It is developed by Borland for use in its Kylix, Delphi, and C++ Builder software development environment.

<span class="mw-page-title-main">Delphi (software)</span> General-purpose programming language and a software product

Delphi is a general-purpose programming language and a software product that uses the Delphi dialect of the Object Pascal programming language and provides an integrated development environment (IDE) for rapid application development of desktop, mobile, web, and console software, currently developed and maintained by Embarcadero Technologies.

<span class="mw-page-title-main">Free Pascal</span> Free compiler and IDE for Pascal and ObjectPascal

Free Pascal Compiler (FPC) is a compiler for the closely related programming-language dialects Pascal and Object Pascal. It is free software released under the GNU General Public License, with exception clauses that allow static linking against its runtime libraries and packages for any purpose in combination with any other software license.

<span class="mw-page-title-main">Windows Forms</span> Graphical user interface software library is Windows Explorer.

Windows Forms (WinForms) is a free and open-source graphical (GUI) class library included as a part of Microsoft .NET, .NET Framework or Mono, providing a platform to write client applications for desktop, laptop, and tablet PCs. While it is seen as a replacement for the earlier and more complex C++ based Microsoft Foundation Class Library, it does not offer a comparable paradigm and only acts as a platform for the user interface tier in a multi-tier solution.

Borland Kylix is a compiler and integrated development environment (IDE) formerly sold by Borland, but later discontinued. It is a Linux software development environment based on Borland Delphi and Borland C++ Builder, which runs under Microsoft Windows. Continuing Delphi's classical Greek theme, Kylix is the name for an ancient Greek drinking cup. The closest supported equivalent to Kylix is the free Lazarus IDE package, designed to be code-compatible with Delphi. As of 2010 the project has been resurrected in the form of Delphi cross compiler for Mac and Linux, as shown in the Embarcadero's Delphi and C++ Builder roadmap. As of September 2011 with Kylix discontinued the framework for cross-platform development by Embarcadero is FireMonkey.

<span class="mw-page-title-main">Graphical user interface builder</span> Software development tool

A graphical user interface builder, also known as GUI designer or sometimes RAD IDE, is a software development tool that simplifies the creation of GUIs by allowing the designer to arrange graphical control elements using a drag-and-drop WYSIWYG editor. Without a GUI builder, a GUI must be built by manually specifying each widget's parameters in the source code, with no visual feedback until the program is run. Such tools are usually called the term RAD IDE.

<span class="mw-page-title-main">Lazarus (software)</span> Free cross-platform integrated development environment for Free Pascal

Lazarus is a free, cross-platform, integrated development environment (IDE) for rapid application development (RAD) using the Free Pascal compiler. Its goal is to provide an easy-to-use development environment for programmers developing with the Object Pascal language, which is as close as possible to Delphi.

The Visual Component Framework (VCF) is an abandoned open source project for development under Microsoft Windows and Apple Macintosh that is distributed under the BSD license. It is an advanced C++ application framework that makes it easier to produce GUI-based C++ applications. The framework is C++ design and has built in support for rapid application development. The framework is designed to be portable over multiple platforms and compilers.

<span class="mw-page-title-main">Oxygene (programming language)</span> Object Pascal-based programming language

Oxygene is a programming language developed by RemObjects Software for Microsoft's Common Language Infrastructure, the Java Platform and Cocoa. Oxygene is based on Delphi's Object Pascal, but also has influences from C#, Eiffel, Java, F# and other languages.

<span class="mw-page-title-main">MonoDevelop</span> Integrated development environment

MonoDevelop was an open-source integrated development environment for Linux, macOS, and Windows. Its primary focus is development of projects that use Mono and .NET Framework. MonoDevelop integrates features similar to those of NetBeans and Microsoft Visual Studio, such as automatic code completion, source control, a graphical user interface (GUI) and Web designer. MonoDevelop integrates a Gtk# GUI designer called Stetic. It supports Boo, C, C++, C#, CIL, D, F#, Java, Oxygene, Vala, JavaScript, TypeScript and Visual Basic.NET. Although there is no word from the developers that is has been discontinued, nonetheless it hasn't been updated in 4 years and is no longer installable on major operating systems, such as Ubuntu 22.04 and above. Its parent Microsoft, seems to have shifted focus to Visual Studio Code and the .NET Framework, which runs on many operating systems, including linux.

<span class="mw-page-title-main">OpenWire (library)</span>

OpenWire is an open-source dataflow programming library that extends the functionality of Embarcadero Delphi and C++ Builder by providing pin type component properties. The properties can be connected to each other. The connections can be used to deliver data or state information between the pins, simulating the functionality of LabVIEW, Agilent VEE and Simulink. OpenWire is available for Visual Component Library (VCL) and FireMonkey (FMX).

<span class="mw-page-title-main">Teechart</span>

TeeChart is a charting library for programmers, developed and managed by Steema Software of Girona, Catalonia, Spain. It is available as commercial and non-commercial software. TeeChart has been included in most Delphi and C++Builder products since 1997, and TeeChart Standard currently is part of Embarcadero RAD Studio 11 Alexandria. TeeChart Pro version is a commercial product that offers shareware releases for all of its formats, TeeChart. Lite for .NET is a free charting component for the Microsoft Visual Studio .NET community and TeeChart for PHP is an open-source library for PHP environments. The TeeChart Charting Library offers charts, maps and gauges in versions for Delphi VCL/FMX, ActiveX, C# for Microsoft Visual Studio .NET, Java and PHP. Full source code has always been available for all versions except the ActiveX version. TeeChart's user interface is translated into 38 languages.

<span class="mw-page-title-main">Chromium Embedded Framework</span> Free and open-source software framework

The Chromium Embedded Framework (CEF) is an open-source software framework for embedding a Chromium web browser within another application. This enables developers to add web browsing functionality to their application, as well as the ability to use HTML, CSS, and JavaScript to create the application's user interface.

This page details the history of the programming language and software product Delphi.

References

  1. "Cross-platform development the FireMonkey way". Delphi Bistro. Retrieved 2016-10-08.
  2. 1 2 "FireMonkey - RAD Studio". docwiki.embarcadero.com. Embarcadero Technologies. Retrieved 2017-05-17.
  3. Software, TMS. "TMS Software". www.tmssoftware.com. Retrieved 2017-05-17.
  4. "FMX.Controls.Presentation.TPresentedControl.ControlType - RAD Studio API Documentation". docwiki.embarcadero.com. Retrieved 2017-05-17.
  5. "VCL vs. FireMonkey". Podcast at Delphi.org. Retrieved 2017-07-25.
  6. "FireMonkey Platform Prerequisites". docwiki.embarcadero.com. Retrieved 2020-09-05.