Delphi 10.2 Tokyo ships with a massive amount of FireMonkey components for cross platform development on Android, iOS, macOS, and Windows. However, there is always room for more custom components to be built to get your app done that much faster. Additionally, once you start deploying your app or it starts getting large you may want to start optimizing some of the functionality. There are quite a few free component suites out there now for FMX from a variety of different authors. There are also some lesser known commercial components suites out there as well. The component suites highlighted in this post are Kernow Software FMX Components, KastriFree, ALFmxControls, FMXUI, FMXComponents, ZMaterialComponents, FMX-UI-Controls, OrangeUI, and FGX-FireMonkey.
Kernow Software FMX Components includes these components:
- TksTableView – Cached table view provides native performance regardless of the number of text/items/graphics
- TksSlideMenu – uses bitmap caching for optimised performance
- TksSegmentButtons – segment button component
- TksFormTransition – component for animating transitions between forms
- TksTabControl – Tab control component with support for different colours/themes
- TksNetHttpClient – enhanced http client with ASync Get method
- TksTileMenu – simple but effective main menu component
- TksChatView – component for building iOS style chat applications
- TksSpeedButton – TSpeedButton descendant with support for iOS style badges
KastriFree is a cross-platform library which builds upon the existing RTL and FMX libraries in Delphi. It supports a number of newer APIs that you won't find in FMX/RTL, and "backfills" for missing APIs. One of the solutions in KastriFree is a fix to handle keeping the current focused control visible when the keyboard is visible on mobile devices.
ALFmxControls contains a wide varity of double buffered controls for FireMonkey and a whole host of helper code for things like the Facebook API, Google Play API, Firebase API, and much more. If you are looking for better drawing speed for some of the shape objects in FMX or some of the base controls be sure to take a look. You can also read more about this component set on the Embarcadero Forums.
FMXUI contains a host of FireMonkey controls which look like they may have a custom implementation for Android. These controls include
- TView basic view
- TViewGroup view group
- TLinearLayout linear layout
- TRelativeLayout relative layout
- TGridsLayout grid layout
- TTextView text view
- TButtonView button view
- TEditView edit box view
- TImageView image view
- TProgressView progress bar view
- TFrameView Frame view extension class
- TListViewEx list box view
- TListExView ListView Extension Class (Delphi official list box)
- TBadgeView unread message prompt little red dot
- TGridView trellis view, through the data adapter to achieve a variety of functions
- TStringGridView Strings grid view
- TDBGridView data set grid view
- TRingView hollow graphics view
- TMultiPathView multi-path visual component
- TAsync asynchronous task processing class
- TToastManager Toast Manager
- TDialogStyleManager dialog style manager
- TDialogBuilder common dialog box construction category
- TDialog dialog base class
- TAlertDialog common dialog entity class
- TProgressDialog Waits for the dialog entity class
FMXComponents has a whole host of very useful looking custom controls for FireMonkey including things like a ratings bar, rotating text boxes, pin code enter box, and many more.
- TFMXQRCode is a wrapper around the ZXing QRCode port to Delphi for generating QRCode images.
- TFMXToast is a control that allows you to pop Android Toast style messages in FireMonkey apps.
- TFMXSeg7Shape is a component for what appears to be displaying displaying LED style numbers.
- There is a BaiduMap SDK wrapper for Firemonkey which looks useful for using the BaiduMap SDK in your Delphi apps.
- TFMXCalendarControl is a custom calendar component in the IOS style for choosing dates on a calendar.
- TFMXGuesturePassword is a keypad style control that takes gestures to generate a pin number like an unlock code.
- TFMXSimpleBBCodeText is a simple control which looks like it formst BBCode text (which includes text colors) for display.
- TFMXImageSlider is an easy to use image slider which can hold a group of images and allow you to slide between them.
- TFMXCircleScoreIndicator is a circular progress indicator component that contains a number label in the center.
- TFMXRatingBar is a custom control that allows you to set a star rating (as in a 5 star display).
- TFMXScrollableList is a scrollable list component that looks similar to have the IOS date time or calendar picker works.
- TFMXLoadingIndicator looks like a fantastic loading indicator library with a variety of loading animations.
- graphics32 is a FireMonkey (and I assume cross platform) version of the popular graphics32 library for Delphi.
- TFMXCallout is an upgraded version of TCallout that uses the INativeCanvas to draw with smooth lines.
- INativeCanvas is a custom helper class for TCanvas which gives you smooth lines across platforms.
- TFMXRotatingText is a rotating text component similar to a the rolls on a slot machine.
ZMaterialComponents contains what looks like a number of natively drawn controls such as line, rectangle, ellipse, circle, and others.
FMX-UI-Controls is a set of components that includes a password entry control, a listview for chat apps, an iOS video recorder control, and a few others as well:
GesturePasswordControl is a gesture password control (TPasswordItem is password item).
MessageListView is a listview appearance by chat style
- TMessageCustomObjectAppearance is the message base appearance inherit from TCommonObjectAppearance
- TMessageCustomItemis the message base item inherit from TListItemDrawable
- TMessageTextObjectAppearance is the text message appearance
- TMessageTextItem is the text message item
- TMessageVoiceObjectAppearance is the text voice message appearance
- TMessageVoiceItem is the voice message item
- TMessageImageObjectAppearance is the image voice message appearance
- TMessageImageItem is the image message item
- TMessageFileObjectAppearance and TMessageVideoObjectAppearance inherit from TMessageImageObjectAppearance
- TMessageFileItem and TMessageVideoItem inherit from TMessageImageItem
- TCanvasHelper is class helper for TCanvas
FMXiOSNativeSearchBox is a NAtiveEdit+SeacherBox control
AniFrame frame base class switch animation
CalendarControl CalendarControl is uses a listview like iOS Calendar style
OrangeUI is a commercial component suite with a wide variety of custom controls out of China. Most of the documentation is in Chinese but there are a lot of different screenshots showing the different functionality available.
- Custom Listview Control
- Custom Treeview Control
- Custom Button Control
- Custom Image Control
- Custom Checkbox and RadioButton Controls
- Custom ComboBox and ComboEdit Controls
- Custom Edit and Memo Controls
- Custom DrawPanel Control
- Custom ImageListViewer Control
- Custom NotifyNumberIcon Control
- Custom PageControl
- Custom ProgressBar Control
- Custom RoundImage Control
- Custom ScrollBox Control
- Custom DBGrid Control
- Custom Frame Control
FGX-FireMonkey is most well known for it's native ProgressDialog and ActivityDialog controls but it also has a number of other very useful components like TfgFlipView, TfdActionSheet, and TfgColorsPanel.
- TfgToast – fast message display class
- TfgFlipView is an image slider. Supports several ways to switch photos with effects and shifts.
- TfgPositionAnimation – animation of properties such as TPosistion
- TfgPosition3DAnimation – animation of properties such as TPosition3D
- TfgBitmapLinkAnimation – animation of properties like TBitmapLink
- TfgProgressDialog – A component for displaying a dialog box at the time of a long background operation, when the runtime of the background operation can be estimated.
- TfgActivityDialog – component for displaying a dialog box at the time of performing a long background operation, when the execution time of the operation can not be adequately assessed.
- TfgActionSheet – The analog of the context menu for mobile platforms.
- TfgColorsPanel – A color palette with a choice of colors.
- TfgGradientEdit – The gradient selection component.
- TfgLinkedLabel – A label supporting the opening of a Web link in the browser by default.
- TfgApplicationEvents – component with the ability to easily set the handlers to the main events of the application: Tracking the change of application status, simple, updating and performing Actions, Changing the orientation of the device, and so on.
- TfgVirtualKeyboard – component that facilitates work with the virtual keyboard. Allows you to set custom buttons above the virtual keyboard under iOS, as well as capture events by displaying and hiding the keyboard.