FireMonkey Fundamentals
35.1 What is FMX?
FireMonkey (FMX): a GPU-accelerated, cross-platform UI framework for Windows, macOS, iOS, Android, and Linux (FMXLinux) from one codebase.
Vector-based, styled controls (not native widgets by default; some have native presentation on iOS/Android via ControlType := Platform).
Units are prefixed FMX. (e.g., FMX.Forms, FMX.Controls, FMX.StdCtrls).
35.2 FMX vs VCL
Windows, macOS, iOS, Android, Linux Native Win32 controls GPU (DirectX/Metal/OpenGL), styles, Skia option Native Windows (plus VCL Styles)
Style-based (platform styles, custom styles) Single (float), device-independent
Align, Anchors, Margins/Padding, TLayout, TFlowLayout, TGridPanelLayout, TScaledLayout Built-in effects, animations, 3D Maturity for desktop business apps
35.3 FMX Basics
Key components: TLayout, TRectangle, TListView (fast mobile list), TListBox, TTabControl, TMultiView (drawer/master-detail), TToolBar, TEdit, TComboBox, TSwitch, TTrackBar, TImage, TGrid/TStringGrid, TWebBrowser, TMapView, TCameraComponent, TMediaPlayer, TAniIndicator, TFloatAnimation, effects (TShadowEffect, TBlurEffect), and 3D (TViewport3D, TCube, TModel3D).
Styles: TStyleBook, the Style Designer, platform-specific styles, custom styles (premium styles from Embarcadero).
Multi-device designer: master view plus platform-specific views (iPhone, Android phone, tablet).
procedure TMainForm.FormCreate(Sender: TObject);
begin
Label1.Text := 'Hello FMX'; // FMX uses .Text instead of .Caption
Button1.StyledSettings := Button1.StyledSettings - [TStyledSetting.FontColor];
Button1.TextSettings.FontColor := TAlphaColors.Red;
end;
procedure TMainForm.Button1Click(Sender: TObject);
begin
ShowMessage('Clicked on ' + TOSVersion.ToString);
// Async dialog (required on Android):
TDialogService.MessageDialog('Continue?', TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo],
TMsgDlgBtn.mbYes, 0,
procedure(const AResult: TModalResult)
begin
if AResult = mrYes then DoContinue;
end);
end;