This is a transcript from our CodeRage 9 session called Leveraging Third Party Components To Accelerate App Development with Firemonkey. The components covered in the session are for Delphi XE6, Delphi XE7, and Appmethod. The components are for one or more of the Firemonkey platforms which are Android, IOS, OSX, and Windows.
What we are going to cover today are a number of third party components for Firemonkey from around the web. These include:
One of my favorite things about using Delphi are the third party components. If you are a long time Delphi developer you know how powerful components are.
I think Delphi has a unique component architecture and it is one of the reasons why Delphi is a force multiplier for your development.
Using third party components can save you time and money. The Delphi run time library provides a roadmap for you to build your own components.
The Delphi run time library comes with source code and helped to create a culture where third party developers also include source code with their components. You should try to always get components that include source code so that you can upgrade or modify them if you need to do so.
A lot of third party component developers offer free trials of their components so you should try them out first if possible to make sure they are going to meet your requirements.
I consider component authors as other members of my development team. When you are looking at prices on third party components keep in mind how much it would cost to build and support that functionality yourself. Some of the components we are going to cover are free and open source.
You also have to keep in mind how long it would take you to build that functionality. Time is money and using third party components allows you to jump ahead and start building the logic of your app now instead of re-building basic functionality.
Firemonkey components may even be more powerful than VCL components because of their multidevice capabilities. I’d like to highlight some of the great Firemonkey components out there, which can really accelerate your app development.
Extended FMX components are components that extend existing functionality found in the Delphi run time library.
These components here are from TMS Software. The first component set I’d like to highlight is TMS Component Studio for FireMonkey. It is actually a collection of seven Firemonkey component suites from TMS Software. They include:
TMS Pack for FireMonkey
TMS Charts for FireMonkey
TMS Cloud Pack for FireMonkey
TMS WebGMaps for FireMonkey
TMS WebOSMaps for FireMonkey
and TMS mCL
The TMS Pack for Firemonkey contains some useful components. The main ones I would like to highlight are the web browser component, the memo component, and the edit component.
The web browser component works on all four Firemonkey platforms and it uses Chromium FMX on Windows, WebKit on Mac OSX, and the native WebView controls on Android and IOS.
The memo component wraps the normal TMemo but offers extended capabilities. It seems to mainly be built to allow you to build your own IDE because it has a gutter and syntax highlighting. However, those functionalities can be turned off which allows you to use it as a standard memo component.
The edit component offers a wide variety of extended features including auto complete, mask edit for alphanumberic, float, money, upper, and lower case types.
And finally there are at least 50 different Firemonkey controls here so you’re sure to find something useful in all of the gauages, meters, scopes, LEDs, switches, star rating, signature components, and more.
Moving on to the second set of extended FMX components. I’d like to highlight the TMS Cloud Pack because it offers API wrappers for a huge number of cloud and web services like DropBox, Box, Google Drive, OneDrive, BitCasa, Facebook, Twitter, Google Calendar, Google Contacts, Windows Live, LinkedIn, Flickr, Picasa, YouTube, Instagram, Pushover, Foursquare, Pryv, Wunderground, and sending SMS messages. The cloud pack works on all FMX platforms.
And next we have TMS FlexCel for VCL and Firemonkey which is a component suite for reading and writing Excel files on all four FMX platforms. It can read and write Excel 95 to Excel 2013 files and then export them as PDF, SVG, and HTML5. A pretty powerful component suite for the enterprise.
Native Platform Components
The DPF IOS components are a set of open source native component wrappers for the IOS platform. There are over 80 different demoes included which show you how to use them. However, you can not mix Firemonkey and DPF IOS controls on the same form. You can however mix FMX component forms with DPF IOS component forms.
It is also a great source of examples and source code for how to integrate with IOS and access various other IOS frameworks. If you do use these components you lose the multidevice advantage that Firemonkey offers but you gain native platform performance.
The DPF Android components are another set of open source native component wrappers from the same author for the Android platform. These components wrap the native Android SDK components and allow you to mix them with FMX components on the same form. Again you lose the multidevice advantage but gain a native platform performance advantage.
TMS iCL is very similar to the DPF IOS components except that TMS iCL is a commercial suite from TMS Software. One difference is that you can also mix the iCL components with FMX components on the same form which you can not do with the DPF components. There are 44 different native IOS components for you to use.
Lastly there is the TMS mCL component suite from TMS Software which are wrapper components for the native platform components on Mac OSX. There are 27 components currently available in this component suite and it they give you native platform performance on the Mac as well. There are also some components here that don’t have equivalent multi device components in Firemonkey.
With all of these native platform components you can also use conditional compilation to target the specific platform.
Next up here are some Native Library Wrappers. Now these components are from Winsoft and they are wrappers for a variety of open source libraries but these are commercial components. Source code is included when you purchase the components.
We have the Android JDBC wrapper which allows you to directly connect to Microsoft SQL Server from Android. Obviously it is only available for Android.
There is the Optical Barcode Recognition wrapper component which uses the Zbar library and it works on Android, IOS, Windows, and OSX.
Next we have the optical character recognition wrapper component which utilizes the Tesseract OCR library. The wrapper currently supports Windows, OSX, and Android. There are also demos provided for each of those platforms so you can try it out on your device.
And that brings us to the barcode generator wrapper component which wraps the Zint Barcode Generator. It supports all four platforms (Android, IOS, Windows, and OSX).
Lastly there are a number of ComPort components available from Winsoft which support a variety of ComPorts on Windows, Android, and OSX.
One final thing I’d like to mention about all of these Winsoft components which is they are all also available as a pack in the Winsoft Component Package which is significantly cheaper than all of the components combined. So if you need two or three of these components it may be cheaper to just get the whole package.
Now I would like to talk about mapping components. There are three types of mapping components. Native Firemonkey components. Native platform components, and web browser based components.
TECNativeMaps is a FMX native component which supports all platforms and offline image caching so it does not need an internet connection to function. It can connect to a variety of map sources like OpenStreetMaps.
TTMSFMXNativeMKMapView is available in the TMS iCL pack and it is platform native. TDPFMapView is in the DPF IOS components and is also platform native. They wrap around the native Apple map solution and use Apple maps. There are no licensing fees to use Apple maps as far as I know.
TTMSFMXWebOSMaps and TTMSFMXWebGMaps both come in the TMS Component Studio for Firemonkey and they wrap the OpenStreetMaps and Google Maps APIs. It uses a web browser for display and you can use them on all four Firemonkey platforms because they use the TMS FMX WebBrowser functionality. OpenStreetMaps requires their copyright info be displayed but there are no other licence fees as far as I know. Google Maps does have yearly license fees for business but there are some exceptions for Android apps.
Lastly you can use the standard web browser controls like the TMS FMX Web Browser wrapper or the TDPFJWebView on Android to display maps from any other mapping provider. However, you will obviously need internet access to utilize any of these browser based mapping solutions which can be tricky on mobile devices.
Lets talk about Progress Dialog Components.
There are some really good free progress dialog components which I use from developer Jaroslav Brovin. They have support for XE5, XE6, and XE7. They use native platform functionality on the device for their animations so they are smooth and professional.
You can use the activity version or the progress bar version. However, they only work on Android and IOS.
There are also a few other components that come with the progress dialog components as well.
For Windows and Mac OSX you will need to build your own custom TForm progress dialogs. You can then use coditional compilation to display the native platform dialogs or your own custom dialogs.
I use these components in my enterprise application and implemented custom TForm progress dialogs for desktop machines.
Moving on to Scripting Components.
There are two multi device scripting options I’d like to cover.
It is tightly integrated with Delphi and that gives you a lot of control of what you can do with scripting. Keep in mind that as far as I know you can not deploy dynamic scripts like this on IOS to the Apple store. You can however use this component for your IOS Enterprise deployments.
You can then execute your script and finally when you want to get the results from your script you can navigate to a URL and catch the navigation in one of the navigate events and parse the URL. You have a limited ability to bring data back out of the web browser component so your integration with the script inside is limited.
Depending on which browser you use you can run your scripts on all four platforms.
Lets talk about Video Components.
The best components I know of for Firemonkey are the FFMPEG wrapper components from Flash AV Software Corp. They offer video player and video converter components for all four Firemonkey platforms by wrapping the open source FFMPEG library.
I have not used these components directly but I have used FFMPEG with another multi device tool and it worked will for converting an Android video format for playback on IOS devices. They gave a truely amazing list of features available in both the player and converter components.
There are also trial versions available for all of them so you can see if they are going to work for your needs.
Briefly we’re going to cover research and charting components.
These research components are from Riversoft AVG and they include components for genetic algorithms, fuzzy logic, and an inference engine component library. You will probably need to come back and review all of the functionality that they offer to really get a feel for what you can do with them.
There are three Firemonkey charting components I’d like to highlight which work on all four platforms. They are TeeChart Pro FMX, TMS Charts for Firemonkey, and RiversoftAVG Charting Component Suite. They are commercial suites but the RiversoftAVG charting suite is available for free for non-commercial use.
I’d just like to briefly show you the features of each of the charting suites and you can evaluate them at your leisure.
The last thing I’d like to cover is a tool for extending Delphi apps in both VCL and FMX to HTML5.
There are two different tools here from CybeleSoft. The first is for Firemonkey and is called WebFMX. The second is for Delphi VCL and is called Thinfinity VirtualUI. Both of these tools are app remoting solutions.
Basically they allow you to create an app server where you host and run your FMX and VCL applications. This app server loads up your app and then sends the visual display to a remote user via a web browser connection.
User responses and data is sent back to the application on the app server. They use WebSockets and display in an HTML5 canvas. There is no deployment or setup on client machines. You update the app server with the new client and new connections start running the apps.
In addition to mouse clicks and keyboard strokes you can print remotely and you can even tie Open and Save dialogs to the remote user. So in the web browser you could click Open and then select a file on the local browser machine. The file would be uploaded and become accessable to the app on the app server.
The limiting factors are how much RAM and CPU power is available on your app server machines.
That’s all we have time to cover in this session so unlease Firemonkey on your existing and future multidevice projects!
Firemonkey is moving fast so there is always something new being released. Be sure to check out FMXExpress.com daily for the latest Firemonkey tips and tricks.
All of these components and no mention of Woll2Woll FirePower or Developer Machines’ FireDataGrid? I really wanted to like TMS’ grid and editors, but I found them lacking, especially with the grid’s performance. As a DB developer, I need to get from A to done as fast as possible. I found getting the grid and editors to do what I want to be too much effort. TMS has good feature scope, but they need to focus on what they do by doing it better.
These are mainly components that I use and are cross platform as much as possible (IOS/Android/Windows/OSX). I looked up both of the ones you mentioned and I will cover them soon. FireDataGrid is Windows/OSX only but FirePower is all platforms so that is pretty awesome. I only had 30 minutes so I did not cover some things like data access controls or grids.