Movatterモバイル変換


[0]ホーム

URL:


Packt
Search iconClose icon
Search icon CANCEL
Subscription
0
Cart icon
Your Cart(0 item)
Close icon
You have no products in your basket yet
Save more on your purchases!discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Profile icon
Account
Close icon

Change country

Modal Close icon
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletter Hub
Free Learning
Arrow right icon
timerSALE ENDS IN
0Days
:
00Hours
:
00Minutes
:
00Seconds
Home> Programming> GUI Application Development> Delphi GUI Programming with FireMonkey
Delphi GUI Programming with FireMonkey
Delphi GUI Programming with FireMonkey

Delphi GUI Programming with FireMonkey: Unleash the full potential of the FMX framework to build exciting cross-platform apps with Embarcadero Delphi

Arrow left icon
Profile Icon Magni
Arrow right icon
€8.98€32.99
Full star iconFull star iconFull star iconFull star iconHalf star icon4.1(14 Ratings)
eBookOct 2020546 pages1st Edition
eBook
€8.98 €32.99
Paperback
€41.99
Subscription
Free Trial
Renews at €18.99p/m
eBook
€8.98 €32.99
Paperback
€41.99
Subscription
Free Trial
Renews at €18.99p/m

What do you get with eBook?

Product feature iconInstant access to your Digital eBook purchase
Product feature icon Download this book inEPUB andPDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature iconDRM FREE - Read whenever, wherever and however you want
Product feature iconAI Assistant (beta) to help accelerate your learning

Contact Details

Modal Close icon
Payment Processing...
tickCompleted

Billing Address

Table of content iconView table of contentsPreview book icon Preview Book

Delphi GUI Programming with FireMonkey

Introducing the FireMonkey Framework

Welcome to the first chapter of this book! We are at the beginning of a journey to gain knowledge about a great application framework, that is, theFireMonkey (FMX) framework. These days, developers face a hard-to-solve problem—building effective cross-platform applications. From a project management point of view, one of the most wanted features is to achieve this goal through a single source code base, not, for example, having a different code base for each supported platform.

The introduction of theFireMonkey framework represented a crucial point, putting Embarcadero Delphi in a magic spot in the global software development scenario. Developers are enabled to design and build native applications for the most popular platforms, including both desktop (Microsoft Windows,Linux, andApple OSX, now also known asmacOS) and mobile (Google Android andApple iOS), using a single toolset and language (thus reducing the effort needed).

This chapter will go through the following topics, to provide some background about what FMX is, why it was created, and its most evident strengths:

  • Approaching FireMonkey
  • Abstracting the visual part of your apps
  • Looking beyond the UI
  • Back to the metal
  • Understanding the strengths and weaknesses of the FMX approach

After reading this chapter, you will be familiar with the general context in which this framework has been developed, including a general understanding of the underlying philosophy of the chosen approach.

Technical requirements

Here is the source code used in this chapter: https://github.com/PacktPublishing/Delphi-GUI-Programming-with-FireMonkey/tree/master/Chapter%2001/HelloWorld.

Generally speaking, for the whole book, you need a computer with Delphi set up and a few additional libraries installed(such as Radiant Shapes (https://getitnow.embarcadero.com/?q=radiant+shapes) and CodeSite Logging (https://getitnow.embarcadero.com/?q=codesite)). Having other physical devices and setting up multiple platforms (iOS, Android, OS X/macOS, and Linux) other than Windows is a plus but not strictly needed to follow the flow of the book.

Approaching FireMonkey

In this section, we will explore the general background we need to properly introduce the FMX framework.Delphi is a longevous environment and it existed way before the FMX framework. We need to delve a bit into the roots of the Delphi tool to understand FMX in a better way.

When I was still a teenager, Delphi was the best development environment to build Microsoft Windows applications. I had someTurbo Pascal background knowledge and someone told me to giveBorland Delphi a try in order to easily get into visual application development. That was during the time of Windows 95 and the world, from an IT point of view, was much simpler than today.DOS and Windows had a very large share of personal computer coverage. The remaining part of the world was runningLinux orMacintosh but with a limited share and only in very specific contexts. Even though the mainframe (such as IBM AS400) was still a thing, business companies were mostly running Windows.

Given that I had limited DOS programming knowledge, I spent a lot of time learning how to build a Windows GUI application and also experimented with other languages (such as Visual Basic,Java, and Visual C++) but Delphi has been my favorite right from the start.

The ability to easily build beautiful Windows applications through a designer is still a great plus and I really think this has been one of the key factors of Delphi's success. The following screenshot shows the Delphi 10.4.1 Sydney splash-screen:

Figure 1.1

Apart from the convenient GUIRapid Application Development (RAD) approach, built into an effective IDE,Object Pascal was a great language showcasing fullObject-Oriented Programming (OOP) support, great C compatibility (perfect for Windows API calls), and featuring a very fast compiler. Generated applications also had outstanding runtime performances.

Looking at Delphi as a whole product, what surfaces is a fantastic tool, capable of letting developers focus on their application code while building fast, good-looking, modern applications – a shiny gem to easily deliver proper and curated GUI applications for the Microsoft Windows platform. In other words, the product performed very well by being more abstracted than raw C/C++ programming and proving to be way more powerful than Visual Basic (just to cite two of the biggest Delphi competitors over time).

This has been possible thanks to a framework shipped with the product: theVisual Component Library (VCL). It acted as a sort of abstraction over the standard Windows controls, wrapping them in a more suitable and easy-to-use programming interface. A big difference with respect to other products has been that all this provided the ability to go back to being low-level and interact with the primitive control whenever needed.

Using the VCL was convenient and the library naturally evolved over two decades (at least!) of development by covering more and more Windows features and capabilities. Every Delphi developer felt at home while dealing with VCL components and most applications never needed to breach into low-level code. This meant higher productivity for the developer and I myself have seen several projects started with other technologies then being abandoned due to running over time for the project execution. Developer teams struggled to deliver functionalities in years while the same project revamped with Delphi came to a successful conclusion within months.

Today, the general scenario is much more complex than what it looked like in the late 1990s. We have seen the rise of mobile platforms and at the time I am writing this, a mobileOperating System (OS) (that is,Android) is now the most used OS worldwide. Also, the desktop platforms scene has seen some changes and nowApple’sMac OS X (aka macOS) has much more widespread adoption than before (even if this is not equally true in every part of the world).Linux somewhat lost the race for desktop user adoption (I am not considering Android as a Linux family member, even though it is Linux kernel-based) but got a relevant position as a server-side platform (driving the web, one could say).

In the following graph, you can see OS distribution over time (period starting January 2009 to January 2020 – data source:https://gs.statcounter.com):

Figure 1.2

From the preceding graph, it is easy to spot the decline of Windows (the dominant platform from 2009 up to 2017) and the corresponding rise of Android (with it overtaking around 2018).

Generally speaking, today, multi-tier architectures have become thede facto standard for real projects that have to deal with a (possibly high) number of heterogeneous clients and need to provide users with proper interfaces in very different scenarios (desktop, mobile, web platforms across different device families). Due to this fact, it's more and more challenging to see applications as single projects, built for a specific platform (as it was for decades). The availability of an application across multiple platforms has become a very demanding feature (ithas almost become an intrinsic standard requirement).

To build and maintain multiple (one per supported platform) development projects, just to deliver the same functionalities to all involved final users, is costly from several points of view. It is hard because developers will have to learn platform-specific behaviors, technologies, APIs, programming languages and deployment toolchains. This requires several different, demanding skills. It will likely mean more than a single development team will be required to accomplish the mission. This also quickly leads to maintainability issues over time, with a huge impact on the total cost and time-to-market of the product you are building. Even if building a specific application for each platform sounds too expensive, the other option (to build a single cross-platform application) has to address some not so evident issues.

First of all, nobody really wants to have a cross-platform application framework that only enables the developer to rely on the common shared part of all platforms. Obviously, this approach (the greatest common divisor) would fall short as platforms are diverging in terms of functionalities and even those capabilities available on all platforms usually have some interface/implementation details that make them hard (or expensive/inefficient) to abstract.

At the same time, nobody needs a framework that is a composition of specific functionalities gathered from all supported platforms as this would result in something actually enabling developers to build applications relying on all functionalities of all platforms but forcing them to write different code (in the same language, though) for each platform (that is, the general problem the framework has been built to solve).

The solution (as often happens) is something in between these two opposites.FireMonkey is in a nice spot, thanks to its mixed strategy. Being a sort of compromise, it goes without saying that this also translates into a list of related strengths and weaknesses.

In the following screenshot, you can see the Delphi IDE while designing a multi-platform application. The Android style is selected for use in the form designer, an iOS style preview is available through theMulti-Device Preview window (docked into the IDE on the right side) and an instance of the application is running on the Windows platform, just in front of the IDE itself—three styles visible at the same time, one per platform; three different binaries using the same (single) source code:

Figure 1.3

As you can see, the cross-platform capabilities of Delphi are highlighted in the preceding screenshot. You are building your application (using a single programming language: Delphi), addressing multiple platforms easily. You can design your app in the IDE, select one of the supported styles (each style being associated with a specific platform—Android, as shown in the previous screenshot) to preview the result in the form designer, seamlessly. At the same time, you can also have a look atMulti-Device Preview (part of the IDE set of functionalities namedFire UI). There, you'll get a realistic preview of how your application will look on other (multiple, eventually) platforms (iOS, which is also shown in the preceding screenshot).

Note that neither of the two mentioned platforms (Android and iOS) is the one that your IDE is running (Windows) and that your app will also be able to be executed, no code changes needed, on Windows (and Linux and OS X/macOS).Doesn't sound great enough? Then you can go even further and have your forms previewed, live, on a mobile device through another technology namedLive Preview (still part of the Fire UI set, http://docwiki.embarcadero.com/RADStudio/en/FireUI_Live_Preview). This time, you'll be able to preview (without having to wait until the compilation time) your UI on actual physical devices, without effort, with the screen of the device acting as an extension of your IDE.

In this section, we discussed the current scenario of software development, describing how and why we are facing the need to deliver multi-platform applications. We also introduced the FMX framework approach, with respect to the difficulties of the implementation of the same application using different tools to address different platforms.

In the next section, we are going to focus on the strategy FMX takes in order to provide different UI visuals to match the current platform of the running application.

Abstracting the visual part of your apps

The first version of the FMX framework was released in 2011 and already had one of its fundamental features, that is, the rendering of the UI was done completely from scratch, using the GPU. At the time, the GPU already supported technologies such as shaders (https://en.wikipedia.org/wiki/Shader), opening up a way to implement high-quality vector graphics, also considering the CPU growth in terms of computational power.

It became possible to build complex UIs, decorated with stunning effects and transitions, reaching the same appealing visuals typical of technologies such as Flash (the leading technology in modern and good-looking UIs, at the time). Given that WinAPI (thus, the VCL) and the new (at that time).NET alternatives - Windows Presentation Foundation (WPF) were not covering the capabilities, the development team of FMX saw a great opportunity to build a new framework and, thankfully, they decided to take the chance.

This was the beginning of the framework having the opportunity to control every aspect of the UI implementation, opening the possibility to strongly abstract the UI from platform-specific controls and capabilities, but the number of controls available was limited and the first version of FMX was not really able to catch up with the same level of functionalities offered by the VCL on Windows.

The major new feature added with FMX 2 was bitmap styles: building a rich vector-based UI had a huge impact on performance and, at the same time, it was hard to implement some of the required components and peculiarities of the UIs. Adding the bitmap style capability moved FMX into the position to build effective, good-looking (pixel-perfect was the motto at the time), and performant applications, still keeping strong abstraction (through the style concept).

Even though it may seem a step backward (from pure vectors to bitmap styles), one should consider that most computer graphic evolution over the decades has gone in a direction where bitmaps were a central part of the game, thus most operating systems and drawing technologies are very familiar with bitmap (raster images) handling and have been optimized for that.

In the next couple of sections, we'll explain why the FMX framework is to be considered an application framework rather than a merely visual framework. It is important for you to properly understand that the general approach toward cross-platform application development has a lot to do with the visuals (we are focusing on visual applications), but there's much more to consider.

Looking beyond the UI

Even though many current prototyping tools tend to see an application as a bunch of views, we all know that a real application is not made only of a set of mere visual assets.

While building a cross-platform application, you obviously wish your visual application framework (FMX in the case) to deal with visual aspects but at the same time, to provide actual functionalities. This is because you will end up needing some level of interaction with the platform your application is running on.

Modern applications have to provide advanced functionalities, including some that are really basic (not always trivial, though), such as (multi-)touch support, and interaction with the system clipboard or with the filesystem. There are some possibly more specific topics, such as sensor integration (camera and positioning, for example), or other device-/platform-specifics such as notification systems, voice recognition, text-to-speech, and other advanced capabilities.

What I am trying to say is that FMX (and the Delphi RTL parts added by Embarcadero in recent years, available both for FMX and VCL) is much more than a visual framework, that is, it provides powerful abstractions that a developer can use to implement functionalities in a real cross-platform way.

This is true and evident in many areas we will cover throughout this book. Starting frombehavioral services, with the aim of abstracting some device-/platform-specific behaviors (such as tab positioning in tab control or the default presentation mode of some components such as TMultiView, commonly used to implement mobile app menus). We could also abstract audio/video services, where a single, shared interface lets you access device cameras, microphones, or other common (but specific) aspects related to the multimedia area.

Just as a simple example, iOS and Android use different file formats for audio and video, thus to have a singleTMediaPlayer component leveraging this difference is very convenient for the developer, that is, just ask the component to play or record audio/video with the same code.

Accessing the storage of the device (thecamera roll for iOS or theGallery/Photos apps for Android) is another great example. There are many functionalities (the device contact list to name another one), and it is hard to provide an exhaustive list.

You may think this list would represent the playground for the app developer but this is only partially true, that is, the VCL has a great level of abstraction over most Windows controls and APIs. Though, you always had a chance to goback to the metal, breaking this generally convenient abstraction and tweaking your code, adding low-level Windows API calls (without confining your possibilities to what the framework offers) and this is true also in the FMX framework, as we will see in the next section.

Back to the metal

Each strong abstraction can easily become a golden cage for its user. This also applies to software development and frameworks where you may obviously like the fact the framework is hiding the complexity underneath and providing a simple, clean, and comfortable place where the developer can live with fewer worries with respect to a more raw approach where everything is the developer's responsibility (embracing the subsequent complexity as much as they can afford).

At the same time, this kind of safe playground (always) has some boundaries and the developer can sometimes reach one of these boundaries and will go (or need to go) further.

Delphi always shined in this, letting you stay warm and safe with your VCL components wrapping Windows controls but, at the same time, letting you directly call whatever external function was available, including, of course, all WinAPI functions. When coming to FMX, as I said, I considered it to be more than a visual framework but rather an application framework; this is still true because, even if you can’t handle FMX controls using APIs designed for native controls, you can still have your FMX (and RTL) Delphi code with platform-specific calls to the underlying APIs of the currently running OS.

This means you (from your Delphi code) can call any iOS library functions (as you would do inObjective-C orSwift). The same applies to Android where you can wrap (there is the Java2OP tool available for Embarcadero’s registered users) the Java code you want to reach into Delphi classes and functions and have it available for your application developer. Even though this may seem like a kind of last refuge for the developer, it also represents a guarantee that your framework (FMX) is not closed and you are actually able to get back to the metal as much as you like or need.

For example, it is not unusual, when writing Android apps on custom devices (that is, those including industrial-level optical orNFC/RFID readers) to have the manufacturer of the device provide it with a standard Android OS image with the addition of some externalJAR files with the libraries needed to properly interface with some device-specific features. Also, it guarantees that if Embarcadero is not providing you this or that API wrapper, you may proceed and generate it (manually or with a tool such as Java2OP) without having to wait for official support for that functionality.

In the next section, we'll try to consider the good and the bad coming from the peculiarities of the FMX approach.

Understanding the strengths and weaknesses

So far, we have simply introduced the FMX framework, exploring both the surroundings in which an FMX application should live and the context the technology was created in.

In this section, we will discuss how the FMX framework performs in the context that it is intended to be used in (the development of cross-platform applications). We'll consider some topics representing the strengths and weaknesses of the FMX approach. This should help you understand where in the big picture of multi-platform development tools we are.

Even though I think this introduction is relevant and should always be considered when evaluating FMX, there are some more practical aspects you may be interested in as well.

At first, consideration is given to the available continuity from VCL to FMX. At first sight, you can appreciate the fact that an experienced Delphi (VCL) developer has been provided with a chance to reuse part of their knowledge and experience while moving from a single (very specifically, Windows) platform development environment to a multi-platform (and/or cross-platform). The existence of FMX has enabled all those Delphi developers to not have to start from scratch (possibly doing this multiple times, one for each platform to address) while making their first steps into new scenarios (such as mobile platforms).

This is far better than having completely different toolsets, especially if you are building a project supporting multiple platforms and also if you are a developer of several projects targeting different platforms. Today, we are starting to diffusely see software (applications) as the backbone of industries and, more generally, today, everything seems to have a somewhat software core to it, with the IT industry gaining more and more consideration and respect. At the same time, this means a huge increase in the demand for software with sustainable costs in terms of money and delivery time, with more and more demanding quality factors.

As we already addressed earlier in this chapter, enabling existing developers (with their valuable experience baggage) to cover new platforms instead of having to raise new (inexperienced) developers, from scratch, on each new platform is obviously a game-changer opportunity that we should try to catch as much as possible. Just to name a clear example where this whole system shines, think about the data access components (and their knowledge) you can naturally use within applications of both the FMX and VCL frameworks. Every business application I’ve seen in 15 years (and counting) of consulting in the IT world had some data-centric part somewhere (often, the most relevant one). We will give an overview of this topic inChapter 4,Discovering Lists and Advanced Components, covering FireDAC utilization within FMX applications.

Another strength factor FMX has is the possibility to add support for new platforms on the go. Just before the Apple iPhone launch (2007), nobody would have ever guessed that Nokia’s Symbian OS would become a dead platform so quickly. The story of Microsoft mobile operating systems has also been subject to lots of change and with some bumps (think about Nokia acquisitions and Nokia X device families that are commercialized by Microsoft but with a custom Android OS on board).

Generally speaking, the mobile world has seen some new entries and some unexpected passings for a while. Today, we can reasonably think of the mobile world as having a substantial split between Android and iOS but, at the same time, we should always consider the fact that a new platform may arise tomorrow. Even though it is not really anew platform, the recent addition of Linux as a target platform for FMX GUI applications has been seen as a new conquest by the whole Delphi community. This addition has been possible thanks to the new implementation provided by a third-party vendor namedKSDev (embodied by the original FMX authors, Eugene Kryukov and Alexey Sharagin) and the effort by Embarcadero to deliver a new compiler for the Linux (Intel) platform.

Together with theLLVM compiler technology, the inner architecture of the FireMonkey framework obviously is responsible for this accomplishment, which puts Delphi in a position to build effective UI applications on up to five different platforms, namely,Microsoft Windows (32-bit and 64-bit),Apple OS X,Apple iOS (and its simulator),Google Android, andLinux (Ubuntu andRedHat are officially supported by the compiler). From a strategic point of view, knowing the set of tools your IDE uses to actually build your applications is extensible (from the compiler to the UIs, including RTL and main DAC libraries) has a lot of value, especially if you are building large applications or you have an estimated lifespan for your projects of more than a couple of years.

Obviously, there are also some drawbacks. There always are, especially in such a high-demanding and dynamic environment made of moving targets (such as mobile platforms). The first obstacle is caused by the high-level abstraction I have described in this chapter. That is, Embarcadero’s whole cross-platform solution is made of abstractions of services and functionalities where the construction of the UI is one of the most relevant in terms of the user experience (more and more of a central success factor for every piece of software out there, from the user's (and customer's) point of view). The key strengths of FMX (such as styles and the ability to perfectly mimic a native application's visual and interactive pattern fundamentals) should strongly mitigate the distance from the top of the abstraction and the bare metal on the ground, but this still remains a challenge.

The speed in innovation, especially in mobile platforms, we are perceiving today can be hard to handle and integrate into a highly abstracted framework. Embarcadero has some opportunities to solve (or at least mitigate) these problems and the first example in this direction has been the introduction of the ControlStyle property, with the platform option to let FMX use a corresponding native control where the developer decides it is worth doing so. This means that if the underlying OS has some advanced features (think about a device-wide orthographic corrector or an advanced dictation system) built into native controls, even cross-platform applications built in FMX can rely on them and not lack behind other apps.

In the same area, relatively young mobile platforms are continuously evolving, trying to improve their performance and so the FMX framework (and Embarcadero’s ecosystem of technologies) will have to improve over time to catch up with native applications (whatever nativeapplications might mean—you should read native here as in non-cross-platform applications).

There is a strange point in my mind and it isn’t so easy to state whether it is a strength or a weakness, that is, Embarcadero is a relatively small player compared with Apple, Google, and Microsoft. This means they obviously have to strive to follow the major decisions of those big players (who all make money from things other than developer tools) and at the same time, it means they have a chance to be more agile and less extremist than them. They have the opportunity to provide a common path to all platforms (a very ambitious goal).

Summary

In this chapter, we introduced the FMX framework, including the historical reasons behind its creation and the context of where it all began. The philosophy of the framework (and its inner evolution) should act as support for the rest of the book and should provide you with some basic understanding for the rest of the content of the book.

If you are an experienced Delphi developer, this chapter should have provided you with a non-technical bridge from classic Delphi to the newer versions, now including this second application framework, other than the original VCL. At the same time, if you are a developer addressing Delphi for the first time, a little background information should help you go through the rest of the content of this book.

In the next chapter, we will explore differences and similarities with respect to the VCL. This will serve experienced developers to learn how many of their skills they can reuse and what they need to keep in mind for their new projects. If you are new to Delphi and will start with FMX, you will nonetheless find some useful basic information about how FMX works, so turn the page and go ahead!

Download code iconDownload Code

Key benefits

  • Delve into the FireMonkey framework and explore its powerful capabilities
  • Enhance the user experience by using various technologies included in Delphi and FMX
  • Boost developer productivity through the cross-platform capabilities enabled by the framework

Description

FireMonkey (FMX) is a cross-platform application framework that allows developers to create exciting user interfaces and deliver applications on multiple operating systems (OS). This book will help you learn visual programming with Delphi and FMX.Starting with an overview of the FMX framework, including a general discussion of the underlying philosophy and approach, you’ll then move on to the fundamentals and architectural details of FMX. You’ll also cover a significant comparison between Delphi and the Visual Component Library (VCL). Next, you’ll focus on the main FMX components, data access/data binding, and style concepts, in addition to understanding how to deliver visually responsive UIs. To address modern application development, the book takes you through topics such as animations and effects, and provides you with a general introduction to parallel programming, specifically targeting UI-related aspects, including application responsiveness. Later, you’ll explore the most important cross-platform services in the FMX framework, which are essential for delivering your application on multiple platforms while retaining the single codebase approach. Finally, you’ll learn about FMX’s built-in 3D functionalities.By the end of this book, you’ll be familiar with the FMX framework and be able to build effective cross-platform apps.

Who is this book for?

This book is for Delphi developers who are looking to discover the full potential of the FireMonkey framework in order to build interactive cross-platform GUI applications and achieve an optimal UI/UX. Basic familiarity with Delphi programming and the VCL will be beneficial but not mandatory.

What you will learn

  • Explore FMX's fundamental components with a brief comparison to VCL
  • Achieve visual responsiveness through alignment capabilities and layout components
  • Enrich the user experience with the help of transitions and visual animations
  • Get to grips with data access and visual data binding
  • Build exciting and responsive UIs for desktop and mobile platforms
  • Understand the importance of responsive applications using parallel programming
  • Create visual continuity through your applications with TFrameStand and TFormStand
  • Explore the 3D functionalities offered by FMX

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date :Oct 29, 2020
Length:546 pages
Edition :1st
Language :English
ISBN-13 :9781788621236
Vendor :
Embarcadero Technologies
Category :
Languages :

What do you get with eBook?

Product feature iconInstant access to your Digital eBook purchase
Product feature icon Download this book inEPUB andPDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature iconDRM FREE - Read whenever, wherever and however you want
Product feature iconAI Assistant (beta) to help accelerate your learning

Contact Details

Modal Close icon
Payment Processing...
tickCompleted

Billing Address

Product Details

Publication date :Oct 29, 2020
Length:546 pages
Edition :1st
Language :English
ISBN-13 :9781788621236
Vendor :
Embarcadero Technologies
Category :
Languages :
Concepts :
Tools :

Packt Subscriptions

See our plans and pricing
Modal Close icon
€18.99billed monthly
Feature tick iconUnlimited access to Packt's library of 7,000+ practical books and videos
Feature tick iconConstantly refreshed with 50+ new titles a month
Feature tick iconExclusive Early access to books as they're written
Feature tick iconSolve problems while you work with advanced search and reference features
Feature tick iconOffline reading on the mobile app
Feature tick iconSimple pricing, no contract
€189.99billed annually
Feature tick iconUnlimited access to Packt's library of 7,000+ practical books and videos
Feature tick iconConstantly refreshed with 50+ new titles a month
Feature tick iconExclusive Early access to books as they're written
Feature tick iconSolve problems while you work with advanced search and reference features
Feature tick iconOffline reading on the mobile app
Feature tick iconChoose a DRM-free eBook or Video every month to keep
Feature tick iconPLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick iconExclusive print discounts
€264.99billed in 18 months
Feature tick iconUnlimited access to Packt's library of 7,000+ practical books and videos
Feature tick iconConstantly refreshed with 50+ new titles a month
Feature tick iconExclusive Early access to books as they're written
Feature tick iconSolve problems while you work with advanced search and reference features
Feature tick iconOffline reading on the mobile app
Feature tick iconChoose a DRM-free eBook or Video every month to keep
Feature tick iconPLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick iconExclusive print discounts

Frequently bought together


Delphi GUI Programming with FireMonkey
Delphi GUI Programming with FireMonkey
Read more
Oct 2020546 pages
Full star icon4.1 (14)
eBook
eBook
€8.98€32.99
€41.99
Hands-On Design Patterns with Delphi
Hands-On Design Patterns with Delphi
Read more
Feb 2019476 pages
Full star icon5 (1)
eBook
eBook
€8.98€29.99
€36.99
Delphi Cookbook
Delphi Cookbook
Read more
Jul 2018668 pages
Full star icon5 (3)
eBook
eBook
€8.98€32.99
€41.99
Stars icon
Total120.97
Delphi GUI Programming with FireMonkey
€41.99
Hands-On Design Patterns with Delphi
€36.99
Delphi Cookbook
€41.99
Total120.97Stars icon
Buy 2+ to unlock€6.99 prices - master what's next.
SHOP NOW

Table of Contents

17 Chapters
Section 1: Delphi GUI Programming FrameworksChevron down iconChevron up icon
Section 1: Delphi GUI Programming Frameworks
Introducing the FireMonkey FrameworkChevron down iconChevron up icon
Introducing the FireMonkey Framework
Technical requirements
Approaching FireMonkey
Abstracting the visual part of your apps
Looking beyond the UI
Back to the metal
Understanding the strengths and weaknesses
Summary
Exploring Similarities and Differences with VCLChevron down iconChevron up icon
Exploring Similarities and Differences with VCL
Technical requirements
Understanding RTL for everyone
Learning about component streaming
Understanding the Style Designer
Learning about components
Handling the placement and sizing of components
Understanding anchors
Learning about alignments
Understanding actions
Learning about data binding
Summary
Section 2: The FMX Framework in DepthChevron down iconChevron up icon
Section 2: The FMX Framework in Depth
Mastering Basic ComponentsChevron down iconChevron up icon
Mastering Basic Components
Technical requirements
Understanding the TText component
Learning about the TLabel component
Understanding shapes
Learning about the TLine class
Understanding the TRectangle class
Learning about the TCircle component
Managing images effectively
Learning about the MultiResBitmaps unit
TImage
TImageViewer
TImageList
TGlyph
Learning about buttons
TSpeedButton
Summary
Discovering Lists and Advanced ComponentsChevron down iconChevron up icon
Discovering Lists and Advanced Components
Technical requirements
Learning about lists
TListBox
TListView
Providing data for the list
Item appearances
Custom appearance
Dynamic appearance
TListView's style customization
Basic event handling
Search capabilities
Pull to refresh
Exploring treeviews
Customizing TTreeview's items
Using grids
TGrid and TStringGrid
Customizing TGrid and TStringGrid
Mastering drawers and panels
Drawer mode
NavigationPane mode
Panel mode
Popover mode
PlatformBehavior mode
Custom mode
Summary
Using FireDAC in FMX ApplicationsChevron down iconChevron up icon
Using FireDAC in FMX Applications
Technical requirements
Learning about the FireDAC library
Understanding the library's composition
Understanding the options system
Exploring FetchOptions properties
Exploring FormatOptions properties
Exploring ResourceOptions properties
Exploring UpdateOptions properties
Working with macros and parameters
Taking advantage of memory tables
Connecting to a database
Introducing Tables, Query, StoredProc, and Command
Understanding dataset persistence
Implementing an onboard database
Exploring the LocalSQL feature
Summary
Implementing Data BindingChevron down iconChevron up icon
Implementing Data Binding
Technical requirements
Introduction to data binding
Approaching LiveBindings
Introducing managed bindings
Understanding what happens under the hood
Mastering real-world data bindings
Introducing BindSources
Binding a field value to a property – TLinkPropertyToField
Binding a dataset field value to a control – TLinkControlToField
Formatting data
Exploring CustomFormat/CustomParse expressions
Understanding LiveBindings methods
Creating the package (FormatFloatPackage)
Implementing the wrapper (FormatFloatInvokable)
Building and installing the package
Testing at design time and using it at runtime
Making custom method calls available
Binding a dataset to a list control – TLinkListControlToField
Filling items with data
Associating images with data
LiveBindings events
Binding a dataset to a grid control – TLinkGridToDataSource
Summary
Understanding FMX Style ConceptChevron down iconChevron up icon
Understanding FMX Style Concept
Technical requirements
Learning about multi-platform visual programming
Introducing the Style concept
Understanding the anatomy of a style
Managing style(s) in the IDE
Binding a component to its style
Exploring the style definition of a component
Approaching the TStyleBook component
Learning about Vector styles
Understanding Bitmap styles
Adding animation, triggers, and effects
Managing styles – the TStyleManager component
Understanding the selection algorithm
Loading a style from embedded resources
Learning about platform-native controls
Summary
Divide and Conquer with TFrameStandChevron down iconChevron up icon
Divide and Conquer with TFrameStand
Technical requirements
Introducing TFrameStand
Designing UIs for mobile applications
Learning about the DRY principle
Understanding visual continuity
Exploring TFrameStand – Hello, World!
Implementing views
Understanding the THomeFrame frame
Learning about the TOrdersFrame frame
Understanding the TOrderDetailsFrame frame
Defining the stand(s)
Learning about animations
Defining the fader stand
Defining the slider stand
Learning about TFormStand
Summary
Building Responsive UIsChevron down iconChevron up icon
Building Responsive UIs
Technical requirements
Understanding responsiveness—visual meaning
Exploring Bootstrap's grid system
Understanding the relevant factors of responsiveness
Leveraging device and application peculiarities
Handling changes in device orientation
Considering the field of application
Understanding screen resolution and density
Building visual layouts
Arranging components with TLayout
Letting components flow as text with TFlowLayout
Building grid layouts with TGridLayout
Advanced arrangements with TGridPanelLayout
Introducing FireUI technology
Creating a new view
The Multi-Device Preview window
Using the FireUI Live Preview app
Considering other FireUI capabilities
Exploring TFormStand
Summary
Orchestrating Transitions and AnimationsChevron down iconChevron up icon
Orchestrating Transitions and Animations
Technical requirements
Introducing animations and transitions
Learning about interpolation
Understanding non-linear interpolations
Working with the FMXAni demo project
Learning about the TAnimation class
Understanding global animation management
Understanding interpolation modifier functions
Learning about TAnimator shortcuts
Learning about specialized animation components
TFloatAnimation
TFloatKeyAnimation
TColorAnimation
TColorKeyAnimation
TGradientAnimation
TRectAnimation
TBitmapAnimation
TBitmapListAnimation
TPathAnimation
Summary
Section 3: Pushing to The Top: Advanced TopicsChevron down iconChevron up icon
Section 3: Pushing to The Top: Advanced Topics
Building Responsive ApplicationsChevron down iconChevron up icon
Building Responsive Applications
Technical requirements
Understanding multithreading
Understanding the thread safety of UI frameworks
Synchronous versus asynchronous execution
Utilizing the Synchronize method
Learning about the Queue approach
Exploring threads and tasks
Introducing the TThread class
Understanding a thread's lifespan
Exploring alternative solutions
Introducing the Parallel Programming Library
Introducing the TTask class
Dealing with synchronization
Waiting for a task to complete
Waiting for tasks to finish
Learning about futures
Summary
Further reading
Exploring Cross-Platform ServicesChevron down iconChevron up icon
Exploring Cross-Platform Services
Technical requirements
Accessing the clipboard service
Understanding copying and pasting text
Learning about copying and pasting graphic content
Managing dialog forms
Understanding differences between synchronous versus asynchronous modes
Leveraging touch capabilities
Playing with the form's OnTouch event
Considering the form's OnTap event
Exploring standard gestures
Implementing interactive gestures
Understanding messaging support
Introducing message definitions as data types
Sending messages through the message manager
Subscribing and responding to messages
Using native HTTP client implementations
Getting familiar with Bluetooth support
Scanning for devices
Connecting to a BLE device
Subscribing for notifications
Summary
Learning about FMX 3D CapabilitiesChevron down iconChevron up icon
Learning about FMX 3D Capabilities
Technical requirements
Introducing 3D programming with FMX
Building a 3D application
Building a 3D "Hello, world!" application
Understanding TDummy and the design-time camera
Setting up a 3D viewport
Understanding lights and materials
Learning about lights
Learning about the materials
Merging 3D and 2D visual objects
Using the TLayer3D component
Merging TFrameStand with 3D visuals
Summary
Other Books You May EnjoyChevron down iconChevron up icon
Other Books You May Enjoy
Leave a review - let other readers know what you think

Recommendations for you

Left arrow icon
Debunking C++ Myths
Debunking C++ Myths
Read more
Dec 2024226 pages
Full star icon5 (1)
eBook
eBook
€8.98€23.99
€29.99
Go Recipes for Developers
Go Recipes for Developers
Read more
Dec 2024350 pages
eBook
eBook
€8.98€23.99
€29.99
50 Algorithms Every Programmer Should Know
50 Algorithms Every Programmer Should Know
Read more
Sep 2023538 pages
Full star icon4.5 (64)
eBook
eBook
€8.98€29.99
€37.99
€37.99
Asynchronous Programming with C++
Asynchronous Programming with C++
Read more
Nov 2024424 pages
Full star icon5 (1)
eBook
eBook
€8.98€25.99
€31.99
Modern CMake for C++
Modern CMake for C++
Read more
May 2024504 pages
Full star icon4.7 (13)
eBook
eBook
€8.98€29.99
€37.99
Learn Python Programming
Learn Python Programming
Read more
Nov 2024616 pages
Full star icon3.5 (2)
eBook
eBook
€8.98€23.99
€29.99
Learn to Code with Rust
Learn to Code with Rust
Read more
Sep 202557hrs 40mins
Full star icon5 (1)
Video
Video
€8.98€56.99
Modern Python Cookbook
Modern Python Cookbook
Read more
Jul 2024818 pages
Full star icon4.9 (17)
eBook
eBook
€8.98€32.99
€41.99
Right arrow icon

Customer reviews

Top Reviews
Rating distribution
Full star iconFull star iconFull star iconFull star iconHalf star icon4.1
(14 Ratings)
5 star64.3%
4 star14.3%
3 star7.1%
2 star0%
1 star14.3%
Filter icon Filter
Top Reviews

Filter reviews by




DREDec 21, 2020
Full star iconFull star iconFull star iconFull star iconFull star icon5
As a Delphi Developer mainly in the Windows VCL world I found this book to be highly instructive and informative on how to expand my capabilities to XE cross platform world. I have 20 years in the Delphi VCL world and have not made the jump to expanding to other platforms. This book certainly gives a detailed road map by explaining FireMonkey's controls and how they differ from the VCL controls in a way an experienced Delphi developer would understand. It also gives a very good explanation of the FireDac controls in how they are used in database world which was welcome for me as I started with BDE and do a lot in the ADO world which is a dead end to expanding to the Cross Platform world as it is tied to Windows. Overall a great Delphi book that should be in any Delphi Developers arsenal.
Amazon Verified reviewAmazon
Jury BuonoJan 16, 2023
Full star iconFull star iconFull star iconFull star iconFull star icon5
consigliato
Amazon Verified reviewAmazon
Mauricio AbreuApr 03, 2021
Full star iconFull star iconFull star iconFull star iconFull star icon5
Its very amazing books guys.
Amazon Verified reviewAmazon
leoplusmaOct 20, 2021
Full star iconFull star iconFull star iconFull star iconFull star icon5
well written book, great work by Andrea Magni
Amazon Verified reviewAmazon
Grigore TomoiagaDec 15, 2020
Full star iconFull star iconFull star iconFull star iconFull star icon5
The package arrived intact on the day and at the set time
Amazon Verified reviewAmazon
  • Arrow left icon Previous
  • 1
  • 2
  • 3
  • Arrow right icon Next

People who bought this also bought

Left arrow icon
50 Algorithms Every Programmer Should Know
50 Algorithms Every Programmer Should Know
Read more
Sep 2023538 pages
Full star icon4.5 (64)
eBook
eBook
€8.98€29.99
€37.99
€37.99
Event-Driven Architecture in Golang
Event-Driven Architecture in Golang
Read more
Nov 2022384 pages
Full star icon4.9 (10)
eBook
eBook
€8.98€29.99
€37.99
€33.99
The Python Workshop Second Edition
The Python Workshop Second Edition
Read more
Nov 2022600 pages
Full star icon4.6 (19)
eBook
eBook
€8.98€31.99
€38.99
Template Metaprogramming with C++
Template Metaprogramming with C++
Read more
Aug 2022480 pages
Full star icon4.6 (13)
eBook
eBook
€8.98€28.99
€35.99
Domain-Driven Design with Golang
Domain-Driven Design with Golang
Read more
Dec 2022204 pages
Full star icon4.4 (18)
eBook
eBook
€8.98€26.99
€33.99
Right arrow icon

About the author

Profile icon Magni
Magni
LinkedIn iconGithub icon
Andrea Magni is a software expert and software developer with decades of experience, provides consultation to support development teams in, architectural definitions, problem-solving and / or trouble-shooting activities, introduction of source and project management tools etc. He has been actively involved in Delphi trainings and talks at Embarcadero coverage x, Delphi Day, IT DevCon and also been a team member of Delphi Mentor for over 8 years.
Read more
See other products by Magni
Getfree access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

How do I buy and download an eBook?Chevron down iconChevron up icon

Where there is an eBook version of a title available, you can buy it from the book details for that title. Add either the standalone eBook or the eBook and print book bundle to your shopping cart. Your eBook will show in your cart as a product on its own. After completing checkout and payment in the normal way, you will receive your receipt on the screen containing a link to a personalised PDF download file. This link will remain active for 30 days. You can download backup copies of the file by logging in to your account at any time.

If you already have Adobe reader installed, then clicking on the link will download and open the PDF file directly. If you don't, then save the PDF file on your machine and download the Reader to view it.

Please Note: Packt eBooks are non-returnable and non-refundable.

Packt eBook and Licensing When you buy an eBook from Packt Publishing, completing your purchase means you accept the terms of our licence agreement. Please read the full text of the agreement. In it we have tried to balance the need for the ebook to be usable for you the reader with our needs to protect the rights of us as Publishers and of our authors. In summary, the agreement says:

  • You may make copies of your eBook for your own use onto any machine
  • You may not pass copies of the eBook on to anyone else
How can I make a purchase on your website?Chevron down iconChevron up icon

If you want to purchase a video course, eBook or Bundle (Print+eBook) please follow below steps:

  1. Register on our website using your email address and the password.
  2. Search for the title by name or ISBN using the search option.
  3. Select the title you want to purchase.
  4. Choose the format you wish to purchase the title in; if you order the Print Book, you get a free eBook copy of the same title. 
  5. Proceed with the checkout process (payment to be made using Credit Card, Debit Cart, or PayPal)
Where can I access support around an eBook?Chevron down iconChevron up icon
  • If you experience a problem with using or installing Adobe Reader, the contact Adobe directly.
  • To view the errata for the book, see www.packtpub.com/support and view the pages for the title you have.
  • To view your account details or to download a new copy of the book go to www.packtpub.com/account
  • To contact us directly if a problem is not resolved, use www.packtpub.com/contact-us
What eBook formats do Packt support?Chevron down iconChevron up icon

Our eBooks are currently available in a variety of formats such as PDF and ePubs. In the future, this may well change with trends and development in technology, but please note that our PDFs are not Adobe eBook Reader format, which has greater restrictions on security.

You will need to use Adobe Reader v9 or later in order to read Packt's PDF eBooks.

What are the benefits of eBooks?Chevron down iconChevron up icon
  • You can get the information you need immediately
  • You can easily take them with you on a laptop
  • You can download them an unlimited number of times
  • You can print them out
  • They are copy-paste enabled
  • They are searchable
  • There is no password protection
  • They are lower price than print
  • They save resources and space
What is an eBook?Chevron down iconChevron up icon

Packt eBooks are a complete electronic version of the print edition, available in PDF and ePub formats. Every piece of content down to the page numbering is the same. Because we save the costs of printing and shipping the book to you, we are able to offer eBooks at a lower cost than print editions.

When you have purchased an eBook, simply login to your account and click on the link in Your Download Area. We recommend you saving the file to your hard drive before opening it.

For optimal viewing of our eBooks, we recommend you download and install the free Adobe Reader version 9.

Create a Free Account To Continue Reading

Modal Close icon
OR
    First name is required.
    Last name is required.

The Password should contain at least :

  • 8 characters
  • 1 uppercase
  • 1 number
Notify me about special offers, personalized product recommendations, and learning tips By signing up for the free trial you will receive emails related to this service, you can unsubscribe at any time
By clicking ‘Create Account’, you are agreeing to ourPrivacy Policy andTerms & Conditions
Already have an account? SIGN IN

Sign in to activate your 7-day free access

Modal Close icon
OR
By redeeming the free trial you will receive emails related to this service, you can unsubscribe at any time.

[8]ページ先頭

©2009-2025 Movatter.jp