FireMonkey vs. VCL

Frequently when I am talking about the VCL or FireMonkey I get some of these common questions:

  • Is VCL deprecated?
  • Which is better FMX or VCL?
  • If I am starting a new app today, should I use VCL or FMX?

FireMonkey vs. VCL

The first is easy to answer, the other two are a little harder. The VCL (or Visual Component Library) is NOT depreciated, nor will it be any time soon. As long as there is Windows and the Windows API, there will be VCL. Just recently in Marco’s Windows 10 Webinar he said “VCL is the best library for Windows desktop development and fully embraces Windows 10.

The VCL gets new components, features and bug fixes frequently, but maybe not as often as FireMonkey. The reason is the VCL is a mature framework, while FireMonkey has been going through a lot of growth the past few versions (although it has stabilized a lot recently, and is reaching a more mature status.)

So which is better, and which to use? There isn’t a straightforward answer, but instead I can tell you the advantages of each, and you can make an educated choice for your next project.

Visual Component Library (VCL)Visual Component Library (VCL)

The VCL was release with the first version of Delphi. It is mostly a thin wrapper over the Windows API controls, but also includes a lot of owner draw controls. It uses GDI, Windows Handles and Windows Messages. This makes it subject to the same behavior as 90% of the other windows applications out there. If you want to you can inject a VCL button from your app into another app, or sniff messages sent to a different app and redirect them into yours.

As I said earlier, the VCL is mature, and so is the 3rd party component space. There are thousands of high quality VCL components, controls and libraries out there. Probably the most notable are the grids. The VCL grids are the best in the industry, and for good reason, our technology partners were making grids for the VCL before any other platforms had the idea of 3rd party controls. So if you want the best grid on the planet, you will probably use the VCL (although the FireMonkey grids are gaining fast).

Because VCL is mostly a thin wrapper on the Windows API, VCL based applications are much smaller than FireMonkey applications. Anymore this usually isn’t a huge deal with fast download speeds and huge hard drive sizes. But if you need a really small lightweight application, then VCL might be a good choice.

Because VCL has been around a while, you may have some existing VCL code that you want to integrate into your application. You could use a utility like Mida converter to convert it to FireMonkey, or something like Monkey Mixer or TFireMonkeyContainer to mix FireMonkey with VCL.

Generally if I am building a simple grid intensive application that I know will only run on Windows, then I find myself using VCL. Or if I need to leverage a specific 3rd party control, or Windows API feature that requires Windows messages. This is less and less frequent though.

FireMonkey (FMX)FireMonkey Cross Platform Framework (FMX)

As FireMonkey is a newer framework you tend to see it covered more. A lot of people are still learning how to use it, and how to tackle cross platform development. The main advantage of FMX is that it is designed from the ground up to be a cross platform framework. It lets you design a single user interface that runs and looks great on Windows, iOS, macOS and Android. But that isn’t the only reason to use FireMonkey.

FireMonkey is based on the latest GPU frameworks: DirectX for Windows and OpenGL elsewhere. It supports both 3D and 2D rendering models, both of which are hardware accelerated. If you want to have some powerful graphic effects or 3D, then FireMonkey is probably going be your first choice. There are some really powerful 3D engines as well as some great graphics effects libraries for VCL, but FireMonkey has these ideas baked into it’s core.

FireMonkey is also a lot more flexible. You can embed any control in any other control with FireMonkey. This ability to build composite controls turns the smaller set of controls it includes into a much more robust set of controls. Also there are animations and effects that let you build fantastic, rich user interfaces with very little effort.

VCL has a respectable set of containers and alignments, but FireMonkey has many, many more, and again they are much more flexible. Another big difference is FireMonkey uses a single precision floating point number instead of an integer in laying out the controls. Much higher precision, but typically subpixel precision doesn’t buy you much. Where it does make a difference is when you scale on FireMonkey since it supports multiple pixel densities.

The most obvious reason to use FireMonkey is if you are currently planning to target multiplatform, or there is a possibility you might in the future (which is a pretty high likelihood). The other reasons are you want a more flexible UI or you plan to take advantage of 3D or other effects FireMonkey provides.

Conclusion

In summary VCL is amazing, and continues to get fixes and new features. It is a better user interface framework than any other out there, except maybe FireMonkey. So use VCL when you are only targeting Windows and don’t need the 3D, effects or flexibility of FireMonkey. Use FireMonkey when you are going multiplatform, or you new some of FireMonkey’s flexibility especially when working around graphics.

Both frameworks will be around for a while. As you use them both you will get a better feel for which to use in each situation. I’d love to hear your feedback about when you choose which framework.

Posted in design, FireMonkey, User Interface, VCL | 9 Comments

3 Webinar Replays: Windows 10, Cool Apps & Migration

Last week was a busy one with 3 major webinars. Those replays are all available now.

Cool Apps and Case Studies

Look at lessons learned from some cool apps developed with Delphi or C++Builder.

Windows 10 Features

Learn about the latest features for Windows 10 in 10.1 Berlin Update 1, specifically around the Windows 10 Centennial or Desktop Bridge. This is the shortest path for getting your native apps in the Windows 10 App Store.

Migrating Delphi and C++Builder Apps

On this webinar we learned how to migrate from older editions of Delphi and C++Builder with some stories of what to look for and how to update your code.

Posted in webinar | Leave a comment

MVP Spotlight: Holger Flick

Holgar FlickI wanted to spotlight a recent return to the Delphi community as an MVP: Dr. Holger Flick. He’s started blogging again and hasn’t slowed down producing good quality technical content.

Like many of us, Holger started programming with Turbo Pascal and GW Basic. For him it was at the age of 7 (with Basic) and switching to Delphi 2 at the age of 14. In 2003 he became very active in the forums and was a member of Team Indy. During that time he was blogging at “Holger’s Thoughts on Delphi,” and also wrote several articles in German and Dutch Delphi magazines.

Holger even spent some time freelancing for QA at Borland and CodeGear. Later for Embarcadero he reported bugs on the localization in German. He also freelanced on the Borland and CodeGear Developer Network. Eventually he earned a place on the Delphi 2005, 2006 and 2007 credits screen (Help > About press ALT key and type TEAM.)

Holgar regularly spoke at conferences on Model-Driven Application Development, ECO (Enterprise Core Objects), and ASP.NET (with Delphi for .NET naturally). I met Holger in person in San Jose at the Delphi Developer Conference in May of 2009, and again in Las Vegas at the Delphi Developer Solutions Conference in 2011.

Holger studied Computer Science at Technical University of Dortmund, Germany, and earned his Ph.D. in Engineering at Ruhr University Bochum, Germany. He then founded his own IT consulting company in 2011 before joining Korfmann Lufttechnik GmbH as head of IT. Now with his  company Flixments, LLC. and new brand Flix Engineering he is blogging about Delphi development again. As an Embarcadero MVP I’m sure his professional skills will be a huge benefit to the Delphi community and IT landscape in South West Florida in general.

Holger says it was hard to find a recent picture of him without sunglasses as they are pretty much required in Florida.

Join me in welcoming Holger back to the Delphi community as an MVP!

Posted in MVP, News | Leave a comment

Get a Copy of Marco’s Object Pascal Handbook with Delphi Starter

As part of the Delphi Boot Camp and Delphi Starter Promotion, you can also get a copy of Marco Cantu’s updated Object Pascal Handbook, all at no cost. (Limited time offer)

If you want a physical copy of Marco’s book, you can pick one up on his website, or just check out the table of contents . . .

  • Part I
    • Chapter 1: Coding in Pascal
    • Chapter 2: Variables and Data Types
    • Chapter 3: Language Statements
    • Chapter 4: Procedures and Functions
    • Chapter 5: Arrays and Records
    • Chapter 6: All About Strings
  • Part II
    • Chapter 7: Objects
    • Chapter 8: Inheritance
    • Chapter 9: Handling Exceptions
    • Chapter 10: Properties and Events
    • Chapter 11: Interfaces
    • Chapter 12: Manipulating Classes
    • Chapter 13: Objects and Memory
  • Part III
    • Chapter 14: Generics
    • Chapter 15: Anonymous Methods
    • Chapter 16: Reflection and Attributes
    • Chapter 17: The Object Class
    • Chapter 18: RunTime Library

Marco Cantu's Object Pascal Handbook

Posted in News | 1 Comment

Blaise Pascal Issue 53 with Atanas Popov Interview

Tried something new where I went over the current issue of Blaise Pascal with Detlef Overbeek. The video is available on YouTube.

Blaise Pascal Issue 53INTERVIEW WITH ATANAS POPOV
Atanas agreed after being asked immediately to be interviewed. That was about two months ago. About two weeks ago there was quite a lot of turbulence in the community and vendors went nervous, some people even saw some kind of armageddon for Delphi. Even the more reason to talk the new Chief, ask him all the questions about their new policy, what is going to happen to and with Delphi. An explanation sometimes even in detail follows in the magazine.

ARTIFICIAL INTELLIGENCE
CREATE AND TRAIN YOUR FIRST NEURAL NETWORK
BY BOIAN MITOV
The quest for intelligent machine has started long before the first computers became reality. For centuries mechanical devices have been created to mimic human behavior, and grab the imagination of the spectators with the promises of mechanical intelligence. But only after the first electronic computers appeared, creating such intelligence became feasible.

The first attempts at such intelligence were focused on teaching the computers to play games and solve mathematical problems. They have proven fairly good at both tasks. However when an attempt was made to connect a camera to a motorized cart and have a computer navigate it through a room full of obstacles, it became apparent that such simple task represents a major challenge to the computer, and so began the quest for creating the intelligent computer.

HOW TO BUILD AN APP IN XML AND
CREATE AN ANDROID PACKAGE
INCLUDING HOW TO USE THE EMULATOR
with code and working APK
BY DETLEF OVERBEEK
In this article we will create a Multi Device Application on an emulated android device.
We are going to use the Multi Device Application we also used in Issue 4 2016 ‘How to build an app in xml’.
We also show where you could find the information to use any of your devices to run a Multi Device Application.  How to do this varies per device so we can not explain it fully within the scope of this article. However we hope to point you into the right direction by showing how to do it with a Samsung S5 -android version 5.0.1. and for the emulator we chose for the NEXUS 6 -because it seemed to be a smaller item and that might run faster…

You can download the latest issue on the Blaise Pascal site.

Posted in News | Leave a comment

The Trouble with Lists of Programmers

There are two hard things about computer science: cache invalidation, naming things, and off-by-one errors. That little witticism is true of computer science, and my Top 11 list of Programmers post.

If you Google that quote you may see where Martin Fowler attributed it originally to Phil Karlton of Netscape fame.  Jeff Atwood also tweeted it, and Tim Bray confirmed it was Karlton.

Here is part 1 of my supplemental list of great software developers. It is in no particular order, and is of no particular magnitude. It is rather arbitrary. Part art, part science, a lot like software development.

Martin Fowler

Martin Fowler

Martin Fowler at the University of São Paulo, Brazil in 2015 

Let’s start with Martin Fowler. He is probably most known for his book on refactoring, which he co-wrote with Kent Beck, John Brant, William Opdyke, and Don Roberts. I don’t think they invented the idea of refactoring code: a controlled technique for improving the design of an existing code base. But that book really did a lot to promote the idea or refactoring and testing, and also to define related concepts, including the code smells that suggest a refactoring may be necessary. There have been a lot of books on refactoring since then, but this is still the authoritative tome in my mind. Fowler is also a proponent of software design and agile methodology. He was one of the original “signers” of the Agile Manifesto.

Alan Turing, OBE FRS

Alan Turing

Alan Turing, 23 June 1912 – 7 June 1954

How in the world did I miss Alan Turing in my first list? Clearly an oversight on my part. While Ada Lovelace was the first Computer Programmer, Turing was the first Computer Scientist. He’s design of a “universal computing machine” became known as a “Turing machine” and is the fundamental basis for computers today. It lead to the idea of a programming language being “Turing complete” as being theoretically capable of expressing all tasks accomplishable by computers. His name was also lent to the “Turing test” which invented as a way to test machines that exhibit intelligent behavior.

Enigma Machine

Enigma machine at the NSA Museum in Maryland, USA

One of Turing’s greatest contributions was one that he was not known for because it was kept secret. He was instrumental in the cryptanalysis of the Enigma cipher during World War II. This is a photo of me using an actual Enigma machine at the NSA museum in Maryland, USA.

John Carmack

John Carmack

John Carmack receiving the Lifetime Achievement Award during the 10th annual Game Developers Choice Awards ceremony in 2010

Would you like to play a game? Chances are you are familiar with Carmack’s work in game development. He was the lead programmer for id software’s Commander Keen, Wolfenstein 3D, Doom, Quake, Rage and their sequels. Currently he is the CTO for Oculus VR, Inc., the folks that are making the Oculus Rift Virtual Reality headset.

Carmack was originally attributed with coming up with the Fast Inverse Square Root, a piece of mathematical black magic to approximate an inverse square of a 32-bit integer 4 times faster than using floating point math. While that one turned out to originate elsewhere, he is responsible for a number of innovative technologies that are common in many games.

Claude Shannon

Claude Shannon

Claude Elwood Shannon (April 30, 1916 – February 24, 2001) was an American mathematician, electrical engineer, and cryptographer known as “the father of information theory”.

Shannon was more of a mathematician, electrical engineer, and cryptographer, but he is also the father of information theory, which has a huge impact on computer science. He met turing in 1943, and discussed his Universal Turing machine as many of its ideas complimented Shannon’s own.

Shannon had many inventions and contributions, but possibly one of his greatest is the Ultimate Machine: A simple box with a single switch. When the switch is flipped, the box opens and a finger reaches out to flip the switch back, retracting the finger and flipping the switch back. Although the flame-throwing trumpet is a close second.

Shannon also co-invented the wearable computer and used it to make a fortune counting cards in Las Vegas. His technique inspired the book Bringing Down the House and the movie 21. He later applied the same technique to the stock market with even better results.  Shannon is one of those people that the more you learn about the more he sounds like a myth or a legend.


This isn’t a complete list. I’ve got more to cover, but this is enough for now . . .

Posted in News | Leave a comment

MVP Spotlight: Eli of FMXExpress.com

Eli of FMXExpress.comI’m sure you’ve all visited FMXExpress.com, if you haven’t then I’ll just let you go there now. Eli is joining us for the C++ Boot Camp this week and is presenting on Thursday with coverage of game development with FireMonkey. He is showing off 4 different FireMonkey games that run on Android, iOS, macOS and Windows. The cool thing is some of the games have features where you can view the game on device while you control it on the other.

Eli currently manages a team of about 25 independent content creators, schedulers, and developers through UpWork. The content team handles over 30 Facebook pages reaching an audience of tens of millions of users. He has been hiring through UpWork since 2012 and has paid out hundreds of thousands of dollars on hundreds of contracts across many different projects. Through his writing on FMXExpress.com Eli has reached over 300,000 dFMXExpressevelopers interested in Delphi FireMonkey with over 600 tips and tricks articles. Additionally, over the years, he has deployed over 300 games to the web, Android, iOS, and Windows and aggregated 80,000+ flash games which have reached over 120+ million players worldwide with 215+ million gameplays. He is a full stack developer and entrepreneur who has also developed and deployed various trialware, freeware, open source, and server softwares with Delphi and many other technologies that have reached millions of users on the desktop.

When not being a business and development rockstar, Eli likes to travel.

You can find Eli all over the web and social media, but here are a few very cool sites to check out . . . .

Trolledge: Multi Platform Open Source Code Editor

 

Posted in MVP | Leave a comment

MVP Spotlight: Samuel “Muka” David

Samuel David, Bug Buster Samuel “Muka” David is a Certified Delphi Developer since version 7 and a Certified Delphi Master Instructor. He specializes in software construction and building components. He loves Object Oriented development and is addicted to refactoring and agile techniques. He is always in search of perfect technique, following development teachers to acquire more knowledge in the art of programming. Delphi official instructor in RS by Aquasoft. Speaker at numbers Delphi Conference and one of Delphi Users Group coordinators of Rio Grande do Sul (DUG-RS). Also a lead instructor for the Extreme Delphi events all over Brazil.

I’ve met Samuel 3 times while visiting for the annual developer conference in Brazil. One thing he does to make things memorable is creating his talk around a move theme or some other external influence. In 2014 he was dressed as a Ghostbuster and did Bug Busters. Here is picture I got with him, Marco Cantu and my flaming hair.

Samuel David with Marco and Jim

He also creates  matching promotional posters for the conference . . .

Indiana Muka 2b GhostPost

Not only is he a master Delphi developer, he is also a master with Photoshop, creativity and costume design. He makes all his outfits himself, including the cool Delphi helmet patch on his shoulder above. Here he is dressed as Indiana Jones in 2013.

indiana_jones

If you live near Brazil then I encourage to to plan on attending the 2016 Embarcadero Conference there. Not only will it be filled with great developer technical content, but you’ll get to meet all the great Brazilian MVPs and see what Samuel is dressed as this year.

BrazilMVPs2015

In 2015 he was dressed as a member of the Elite Squad, although he isn’t wearing his beret in the picture above.

Posted in MVP, News | Leave a comment

Cool App Contender: SUMOTORI DE CHU

The next contender in our cool app contest is SUMOTORI DE CHU.

SUMOTORI_DE_CHUAre you fond of wrestling, sumo or other fighting games? You should surely try SUMOTORI DE CHU app. Inspired by Japanese national sport SUMO; it is a competitive full-contact sport where a wrestler attempts to force another wrestler out of a circular ring. It is an amazing minimalistic network game for two players.

It uses Wifi to synchronize the position, score and sound on a local network. Users can update their player image by taking snaps from their camera which will automatically get updated in the other player profile as well. Players can control the motion by tilting their device in the intended direction. This unique game also senses the physical motion of the user and this makes it able to control the motion in the game by those physical movements.

It is not just tilting the mobile device that makes the wrestler movie, but for acceleration you need to make big movements. The simplicity, physical involvement and the realistic touch to this game makes it a great contender for the cool app contest.

Usage of technology to develop the app:

This game is designed using Delphi and it is aimed for iOS and Android devices.  It used some of the best Embarcadero product features such as FMX Application Platform, App Tethering, Box2D, Sensor manager for the gyroscope, Motion sensor for the accelerometer, component Camera (accessed through an action), and JSON. To enable running simultaneous audio files it uses free Game Audio Manager Class provided by FMXexpress.com.

Watch the video to understand the basic features and use of this cool app.

Built with Delphi Power by FireMonkey

Posted in Cool Apps, News | Leave a comment

Cool App Contender: Network Fool Card Game

I don’t know Russian, but I suppose I think I’m pretty good at recognizing Cyrillic characters and assuming it must be Russian. But I checked with Google Translate and it tells me that this is Russian for “Network Fool game.” The video also includes some Cyrillic text on buttons and such, but no audio.

It turns out Network Fool isn’t just a card game. It is an plugin for the chat system CommFort. Maxim describes the architecture pretty well:

Since the text chat is a client-server structure I had to write the server side of the game – to store statistics and other calculations, as well as the client part. However, the client side is not so simple, it not only communicates with the server, but also starts a separate process for the graphic display of the game and builds a GUI in the chat window. The server and client side is a dll library written with VCL, and the graphical shell is a separate exe using FMX.

I love that network fool integrates with a 3rd party system, extending a chat system into a full card game platform. The fact that is uses both FireMonkey and VCL to make it all work is a great example of flexibility and versatility. It is developed with Delphi, and uses FireDAC and Named Pipes to make it all work.

Watching the video I would not have expected that it was a card game plugged into a chat system. It looks more like a card game with an integrated chat window. I’m always tickled to see people extend systems in new and creative ways like this. Certainly a cool app contender.

Built with Delphi Built with FireMonkey Built with VCL

Notice the VCL button doesn’t have an icon on it? You may remember the old one with the colorful, 3D shaded shapes: circle, cube and cone. I’m working on a new one that I hope you all like just as much. Stay tuned!

Posted in Cool Apps, News | Leave a comment