Перейти до вмісту

FireMonkey

Матеріал з K2 ERP Wiki Ukraine — База знань з автоматизації та санкцій в Україні

FireMonkey або FMX — це кросплатформена бібліотека візуальних компонентів і application framework для Delphi, C++Builder та RAD Studio. FireMonkey використовується для створення desktop, mobile і multi-device застосунків із графічним інтерфейсом, стилями, анімаціями, векторною графікою, 2D/3D-можливостями та єдиною кодовою базою для кількох платформ.

FireMonkey є альтернативою класичній VCL, але має іншу філософію. Якщо VCL орієнтована на Windows desktop, то FireMonkey створювався як кросплатформений framework для Windows, macOS, iOS, Android та інших підтримуваних платформ.

FireMonkey — це кросплатформений UI-фреймворк Delphi для створення застосунків з однієї кодової бази під кілька платформ.

Коротко

Параметр Значення
Назва FireMonkey
Скорочення FMX
Тип Кросплатформена бібліотека візуальних компонентів і application framework
Екосистема Delphi, C++Builder, RAD Studio
Основні мови Object Pascal / Delphi, C++
Основне призначення Multi-device застосунки з графічним інтерфейсом
Платформи Windows, macOS, iOS, Android; Linux через FMXLinux або відповідні можливості редакцій
Головні можливості UI-компоненти, стилі, анімації, графіка, 2D/3D, multi-device layout
Класична альтернатива в Delphi VCL
Open source-аналог за ідеєю LCL у Lazarus
Офіційна документація https://docwiki.embarcadero.com/RADStudio/

Головна ідея FireMonkey

Головна ідея FireMonkey — дозволити розробнику створювати застосунок один раз і адаптувати його для кількох платформ.

Типова схема:

створити multi-device application;
додати FMX-компоненти;
налаштувати layout;
описати події;
підключити бізнес-логіку;
зібрати застосунок під потрібну платформу.

FireMonkey не просто копіює VCL. Він має власну систему rendering, стилів, анімацій і layout, тому підхід до створення інтерфейсу в FMX відрізняється від класичного Windows desktop-підходу.

VCL мислить переважно Windows-формами. FireMonkey мислить multi-device інтерфейсами.

Важливі акценти

Статус Теза Пояснення
Ключове FireMonkey створений для multi-platform FMX дозволяє створювати застосунки для кількох платформ з однієї кодової бази.
Ключове FireMonkey має власну систему стилів UI можна оформлювати незалежно від стандартного вигляду ОС.
Ключове FireMonkey підтримує графіку й анімації FMX сильніший за VCL у візуальних ефектах, стилях і custom UI.
Ключове FireMonkey підходить для desktop і mobile Його можна використовувати для Windows, macOS, Android, iOS та інших підтримуваних платформ.
Важливо FireMonkey не є VCL Багато підходів схожі, але компоненти, rendering, layout і стилі працюють інакше.
Увага Кросплатформеність потребує тестування Один код не гарантує однакову поведінку UI на всіх платформах без перевірки й адаптації.

Історія

FireMonkey зʼявився в екосистемі Embarcadero як відповідь на потребу створювати застосунки не тільки для Windows, а й для інших платформ.

Класичний Delphi багато років був дуже сильним у Windows desktop через VCL. Але з розвитком macOS, iOS, Android і cross-platform розробки виникла потреба в іншій UI-бібліотеці.

FireMonkey був створений як framework, який може:

  • працювати на кількох платформах;
  • мати власну систему rendering;
  • підтримувати стилі;
  • підтримувати анімації;
  • підтримувати 2D і 3D;
  • використовувати GPU;
  • дозволяти створювати multi-device застосунки;
  • бути частиною RAD Studio.

FireMonkey, FMX, VCL і Delphi

Ці поняття важливо розрізняти.

Термін Що означає
Delphi IDE, компілятор, мова й платформа розробки від Embarcadero
RAD Studio Середовище, яке включає Delphi та C++Builder
VCL Класична бібліотека компонентів Delphi для Windows desktop
FireMonkey / FMX Кросплатформена бібліотека компонентів для multi-device застосунків
LCL Бібліотека компонентів Lazarus, схожа за ідеєю на VCL, але open source

VCL — це класичний Windows desktop у Delphi. FireMonkey — це multi-device і cross-platform напрям Delphi.

Для чого використовується FireMonkey

Напрям Як використовується FireMonkey Приклади
Windows desktop Створення сучасних desktop-застосунків Бізнес-програми, утиліти, dashboard
macOS desktop Застосунки для macOS Cross-platform desktop-клієнти
Android Мобільні застосунки Складські застосунки, мобільні кабінети, польові програми
iOS Мобільні застосунки для iPhone/iPad Бізнес-клієнти, мобільні форми
Linux GUI-застосунки через FMXLinux або відповідні можливості Корпоративні desktop-рішення
ERP/CRM клієнти Desktop/mobile інтерфейси до бізнес-систем Кабінети, робочі місця, mobile ERP
Візуальні застосунки Графіка, анімації, стилізований UI Презентаційні, технічні, touch UI
Інтеграції Клієнтські застосунки до API REST, JSON, backend-сервіси

FireMonkey і RAD-підхід

FireMonkey підтримує RAD-підхід, як і VCL, але з акцентом на multi-device.

Розробник може:

  • створити FMX-проєкт;
  • візуально розмістити компоненти;
  • налаштувати властивості;
  • призначити події;
  • використати styles;
  • налаштувати layout для різних екранів;
  • зібрати застосунок під потрібну платформу.

Приклад обробника кнопки:

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Hello from FireMonkey!');
end;

Основні поняття FireMonkey

Поняття Пояснення
Form Вікно або екран застосунку
Component Візуальний або невізуальний компонент
Control Елемент інтерфейсу
Style Оформлення компонента
Layout Розміщення елементів
Animation Анімація властивостей
Effect Графічний ефект
Scene Візуальна сцена FMX
Multi-Device Preview Перегляд інтерфейсу для різних пристроїв

FMX Application

У Delphi FireMonkey-проєкт зазвичай створюється як:

File → New → Multi-Device Application

Або як FireMonkey Application, залежно від версії RAD Studio.

Після створення проєкту розробник отримує:

  • головну форму;
  • FMX unit;
  • designer;
  • палітру FMX-компонентів;
  • можливість вибору target platform;
  • налаштування deployment.

Приклад структури FireMonkey-проєкту

Project/
├── Project.dpr
├── MainForm.pas
├── MainForm.fmx
├── Services/
│   └── CustomerService.pas
├── Models/
│   └── Customer.pas
├── Repositories/
│   └── CustomerRepository.pas
├── Resources/
│   ├── styles/
│   └── images/
└── README.md

У FMX форма часто має файл:

.fmx

Він містить опис візуальних компонентів FireMonkey.

Основні FMX-компоненти

Компонент Для чого
TForm Форма або основне вікно
TButton Кнопка
TLabel Текстовий напис
TEdit Поле введення
TMemo Багаторядковий текст
TListBox Список
TListView Список для mobile і desktop UI
TGrid Табличне відображення
TLayout Контейнер для розміщення
TPanel Панель
TTabControl Вкладки
TToolBar Панель інструментів
TImage Зображення
TRectangle Прямокутник для UI/графіки

TLayout

TLayout — один із важливих контейнерів FMX.

Він використовується для:

  • групування компонентів;
  • побудови адаптивного інтерфейсу;
  • розміщення блоків;
  • створення reusable UI;
  • контролю позицій;
  • побудови mobile-friendly екранів.

Приклад ідеї:

MainLayout
├── HeaderLayout
├── ContentLayout
└── FooterLayout

Align і Anchors у FireMonkey

FireMonkey має властивості для розміщення елементів.

Типові значення Align:

  • None;
  • Top;
  • Bottom;
  • Left;
  • Right;
  • Client;
  • Center;
  • Contents;
  • Fit;
  • FitLeft;
  • FitRight;
  • Scale.

Приклад у коді:

HeaderLayout.Align := TAlignLayout.Top;
ContentLayout.Align := TAlignLayout.Client;
FooterLayout.Align := TAlignLayout.Bottom;

Styles у FireMonkey

Одна з сильних сторін FMX — система стилів.

Style дозволяє змінювати вигляд компонентів без повного переписування логіки.

Стилі можуть впливати на:

  • кольори;
  • шрифти;
  • фони;
  • кнопки;
  • поля введення;
  • списки;
  • стани компонентів;
  • hover;
  • pressed;
  • focused;
  • disabled.

У FireMonkey зовнішній вигляд компонента значною мірою визначається стилем, а не тільки стандартним виглядом операційної системи.

FMX Style Designer

FMX Style Designer — інструмент для створення й редагування стилів FireMonkey.

Він дозволяє:

  • створювати теми;
  • редагувати кольори;
  • налаштовувати стани компонентів;
  • працювати з typography;
  • створювати корпоративний стиль;
  • адаптувати UI під бренд;
  • змінювати вигляд стандартних компонентів.

FireMonkey і графіка

FireMonkey має сильні графічні можливості.

Він підтримує:

  • 2D-графіку;
  • 3D-графіку;
  • векторні елементи;
  • прозорість;
  • ефекти;
  • трансформації;
  • масштабування;
  • анімації;
  • GPU-accelerated rendering.

Типові графічні елементи:

  • TRectangle;
  • TCircle;
  • TLine;
  • TPath;
  • TImage;
  • TText;
  • TCanvas.

TCanvas

TCanvas використовується для малювання.

Приклад ідеї:

procedure TForm1.PaintBox1Paint(Sender: TObject; Canvas: TCanvas);
begin
  Canvas.BeginScene;
  try
    Canvas.DrawLine(PointF(10, 10), PointF(100, 100), 1);
  finally
    Canvas.EndScene;
  end;
end;

FireMonkey і анімації

FireMonkey має вбудовану підтримку анімацій.

Приклади:

  • зміна прозорості;
  • переміщення;
  • масштабування;
  • обертання;
  • зміна кольору;
  • плавне відкриття панелі;
  • анімація кнопки;
  • mobile transitions.

Типові компоненти:

  • TFloatAnimation;
  • TColorAnimation;
  • TPathAnimation;
  • TBitmapAnimation.

Приклад ідеї:

FloatAnimation1.PropertyName := 'Opacity';
FloatAnimation1.StartValue := 0;
FloatAnimation1.StopValue := 1;
FloatAnimation1.Duration := 0.3;
FloatAnimation1.Start;

FireMonkey і 3D

FireMonkey має 3D-можливості.

Можна працювати з:

  • 3D-сценами;
  • 3D-обʼєктами;
  • камерами;
  • світлом;
  • матеріалами;
  • трансформаціями;
  • обертанням;
  • позиціонуванням у просторі.

Проте для класичних бізнес-застосунків 3D використовується рідше. Частіше FMX застосовують для multi-device UI, стилів і mobile/desktop інтерфейсів.

FireMonkey і mobile

FireMonkey може використовуватись для Android та iOS застосунків.

Типові mobile-сценарії:

  • мобільний кабінет клієнта;
  • складський термінал;
  • польовий застосунок;
  • мобільний CRM-клієнт;
  • інвентаризація;
  • форма збору даних;
  • мобільний dashboard;
  • клієнт до ERP/API.

Для mobile важливо враховувати:

  • різні розміри екранів;
  • touch input;
  • DPI;
  • permissions;
  • deployment;
  • platform services;
  • push notifications;
  • offline mode;
  • роботу з камерою;
  • роботу з GPS.

FireMonkey і Android

Для Android-застосунків потрібно враховувати:

  • Android SDK;
  • JDK;
  • target API;
  • permissions;
  • deployment на пристрій;
  • підпис APK/AAB;
  • Google Play вимоги;
  • продуктивність UI;
  • роботу з touch;
  • lifecycle застосунку.

FireMonkey і iOS

Для iOS-застосунків потрібно враховувати:

  • macOS build host;
  • Xcode;
  • provisioning profiles;
  • certificates;
  • App Store вимоги;
  • deployment на пристрій;
  • sandbox;
  • permissions;
  • lifecycle застосунку.

FireMonkey і macOS

FMX дозволяє створювати desktop-застосунки для macOS.

Потрібно враховувати:

  • відмінності UI;
  • меню;
  • keyboard shortcuts;
  • sandbox;
  • code signing;
  • notarization;
  • packaging;
  • шляхи до файлів;
  • поведінку вікон;
  • підтримку Retina/DPI.

FireMonkey і Windows

На Windows FMX можна використовувати для:

  • сучасних desktop-застосунків;
  • touch-friendly UI;
  • stylized UI;
  • dashboard;
  • мультимедійних програм;
  • застосунків із нестандартним дизайном;
  • multi-device клієнтів.

Проте якщо потрібен класичний Windows desktop, стандартні Windows controls і максимальна сумісність зі старими Delphi desktop-проєктами, часто краще підходить VCL.

FireMonkey і Linux

FireMonkey може використовуватись для Linux GUI через FMXLinux або відповідні можливості редакцій Delphi/RAD Studio.

У Linux-сценаріях потрібно перевіряти:

  • доступність FMXLinux;
  • редакцію RAD Studio;
  • deployment;
  • графічне середовище;
  • залежності;
  • шрифти;
  • DPI;
  • роботу з файлами;
  • поведінку UI;
  • підтримку потрібних компонентів.

FireMonkey і бази даних

FireMonkey може працювати з базами даних через Delphi-бібліотеки доступу до даних.

Найчастіше використовують:

  • FireDAC;
  • REST API;
  • JSON;
  • DataSnap;
  • RAD Server;
  • SQLite для локальних даних;
  • InterBase;
  • Firebird;
  • PostgreSQL;
  • MySQL;
  • Microsoft SQL Server;
  • Oracle Database.

FireMonkey і FireDAC

FireDAC — основна сучасна бібліотека доступу до баз даних у Delphi.

Приклад запиту:

FDQuery1.SQL.Text := 'SELECT * FROM customers WHERE city = :city';
FDQuery1.ParamByName('city').AsString := 'Київ';
FDQuery1.Open;

У FMX застосунках FireDAC часто використовують для:

  • локальної SQLite-бази;
  • мобільного offline storage;
  • підключення до backend;
  • синхронізації;
  • кешування даних;
  • бізнес-довідників;
  • мобільних ERP/CRM-клієнтів.

FireMonkey і REST API

FMX-застосунки часто працюють із REST API.

Типовий обмін:

FMX mobile/desktop app
→ REST API
→ Backend
→ Database

Приклад JSON:

{

 "customerId": 123,
 "name": "Anna",
 "status": "active"

}

Для реальних проєктів важливо:

  • обробляти помилки мережі;
  • враховувати offline mode;
  • зберігати токени безпечно;
  • оновлювати дані фоново;
  • показувати loading states;
  • синхронізувати конфлікти.

FireMonkey і offline mode

Для mobile і польових застосунків важливий offline mode.

Типова схема:

локальна база SQLite;
користувач працює без інтернету;
дані зберігаються локально;
при появі мережі запускається синхронізація;
сервер приймає зміни;
конфлікти обробляються за правилами бізнесу.

Offline mode корисний для:

  • складу;
  • польових менеджерів;
  • інвентаризації;
  • сервісних інженерів;
  • мобільних продажів;
  • доставки;
  • виробництва.

FireMonkey у ERP

FMX може використовуватись як desktop або mobile-клієнт до ERP.

Типові сценарії:

  • мобільний склад;
  • інвентаризація;
  • перегляд залишків;
  • мобільні замовлення;
  • кабінет менеджера;
  • dashboard керівника;
  • approval workflow;
  • мобільний CRM;
  • робоче місце оператора з нестандартним UI.
ERP-сценарій Як може допомогти FMX
Склад Mobile app для сканування й рухів товарів
Продажі Замовлення з планшета або телефону
Керівник Dashboard із показниками
CRM Мобільна картка клієнта
Сервіс Польові заявки й статуси
Документообіг Погодження документів

FireMonkey у CRM

FMX може бути корисним для CRM-клієнтів:

  • мобільна картка клієнта;
  • список контактів;
  • задачі;
  • історія взаємодії;
  • угоди;
  • нотатки;
  • нагадування;
  • фото або файли;
  • інтеграція з API;
  • offline-доступ.

FireMonkey і custom UI

FireMonkey добре підходить там, де потрібен не стандартний Windows UI, а власний стиль.

Приклади:

  • branded application;
  • dashboard;
  • touchscreen UI;
  • kiosk mode;
  • mobile-first інтерфейс;
  • візуальні панелі;
  • мультимедійні застосунки;
  • красиві презентаційні форми;
  • адаптивні інтерфейси.

FireMonkey і VCL

FireMonkey часто порівнюють із VCL.

VCL FireMonkey
Орієнтована на Windows desktop Орієнтована на multi-device і cross-platform
Використовує Windows controls і Windows API Має власну систему rendering і стилів
Дуже сильна для класичних бізнес-систем Windows Сильна для custom UI, mobile і multi-platform
Має величезну legacy-екосистему Більш сучасна для нових multi-device інтерфейсів
Краще для класичних Windows ERP/CRM desktop Краще для застосунків, які мають працювати на кількох платформах

VCL і FireMonkey не замінюють одне одного повністю. Вони вирішують різні задачі.

FireMonkey і LCL

LCL у Lazarus і FireMonkey обидві можуть використовуватись для desktop GUI, але мають різну природу.

LCL FireMonkey
Open source бібліотека Lazarus Комерційна Delphi/RAD Studio екосистема
Працює через widgetsets Має власну систему rendering
Орієнтована на Free Pascal Орієнтована на Delphi/C++Builder
Добра для open source cross-platform desktop Добра для multi-device, mobile, styled UI

FireMonkey і FMX-файли

Форми FireMonkey зберігають візуальний опис у файлах:

.fmx

Код форми зазвичай у:

.pas

Приклад:

MainForm.pas MainForm.fmx

Файл .fmx містить опис компонентів, їхніх властивостей, позицій, стилів і структури форми.

Події у FireMonkey

FireMonkey, як і VCL, використовує події.

Типові події:

  • OnClick;
  • OnCreate;
  • OnDestroy;
  • OnChange;
  • OnTap;
  • OnResize;
  • OnKeyDown;
  • OnMouseDown;
  • OnGesture.

Приклад:

procedure TForm1.Edit1Change(Sender: TObject);
begin
  Label1.Text := Edit1.Text;
end;

У FMX для тексту часто використовується властивість:

Text

а у VCL для написів часто використовується:

Caption

Відмінності Caption і Text

У VCL багато компонентів мають Caption. У FireMonkey частіше використовується Text.

Приклад FMX:

Label1.Text := 'Готово';
Button1.Text := 'Зберегти';

Приклад VCL:

Label1.Caption := 'Готово'; Button1.Caption := 'Зберегти';

Platform Services

FireMonkey має механізми для роботи з platform services.

Це потрібно, коли застосунок має використовувати можливості конкретної платформи:

  • clipboard;
  • dialogs;
  • notifications;
  • sensors;
  • camera;
  • location;
  • sharing;
  • permissions;
  • device information;
  • application services.

FireMonkey і permissions

На mobile-платформах застосункам потрібні дозволи.

Приклади:

  • camera;
  • location;
  • storage;
  • microphone;
  • notifications;
  • network;
  • Bluetooth.

Потрібно враховувати:

  • Android permissions;
  • iOS Info.plist;
  • runtime permission request;
  • поведінку при відмові користувача;
  • пояснення, навіщо потрібен дозвіл.

FireMonkey і deployment

Deployment у FMX залежить від цільової платформи.

Платформа Що потрібно врахувати
Windows EXE, DLL, ресурси, installer
macOS app bundle, signing, notarization
Android APK/AAB, SDK, permissions, signing
iOS Xcode, certificates, provisioning profiles
Linux FMXLinux, залежності, графічне середовище

FireMonkey і продуктивність

На продуктивність FMX впливають:

  • кількість компонентів;
  • складність стилів;
  • анімації;
  • графічні ефекти;
  • робота з великими списками;
  • завантаження зображень;
  • використання GPU;
  • платформа;
  • device performance;
  • робота в UI-потоці.

Рекомендації:

  • не перевантажувати форму компонентами;
  • оптимізувати списки;
  • використовувати lazy loading;
  • обережно застосовувати ефекти;
  • тестувати на реальних пристроях;
  • не виконувати довгі операції в UI-потоці.

FireMonkey і потоки

Як і в інших UI-framework, оновлювати інтерфейс потрібно з головного потоку.

Приклад ідеї:

TThread.Queue(nil,
  procedure
  begin
    Label1.Text := 'Готово';
  end
);

Довгі операції бажано виконувати у фоновому потоці:

  • завантаження даних;
  • запити до API;
  • обробка файлів;
  • синхронізація;
  • імпорт/експорт;
  • розрахунки.

FireMonkey і LiveBindings

LiveBindings — механізм звʼязування даних із UI-компонентами.

Його можна використовувати для:

  • binding полів dataset до компонентів;
  • звʼязування обʼєктів із UI;
  • швидкого прототипування;
  • форм редагування;
  • списків і таблиць.

LiveBindings зручні, але у великих проєктах потрібно уважно контролювати архітектуру, щоб не отримати приховану складність.

FireMonkey і Multi-Device Preview

Multi-Device Preview дозволяє перевіряти, як інтерфейс виглядатиме на різних пристроях.

Це корисно для:

  • телефонів;
  • планшетів;
  • desktop;
  • різних орієнтацій;
  • різних розмірів екрана;
  • перевірки layout;
  • адаптації UI.

Хороша архітектура FMX-проєкту

У великих FMX-проєктах не варто писати всю логіку у формах.

Рекомендована структура:

Project/
├── Forms/
│   ├── MainForm.pas
│   └── LoginForm.pas
├── Frames/
│   ├── CustomerCardFrame.pas
│   └── DashboardFrame.pas
├── Services/
│   ├── AuthService.pas
│   └── SyncService.pas
├── Repositories/
│   ├── CustomerRepository.pas
│   └── OrderRepository.pas
├── Models/
│   ├── Customer.pas
│   └── Order.pas
├── Api/
│   └── ApiClient.pas
├── Storage/
│   └── LocalDatabase.pas
├── Resources/
│   ├── styles/
│   └── images/
└── Project.dpr

Рекомендовані шари

Шар Призначення
Forms Екрани застосунку
Frames Повторно використовувані UI-блоки
Services Бізнес-логіка
Repositories Доступ до даних
Api REST/HTTP-клієнт
Storage Локальне збереження
Models Структури даних
Resources Стилі, зображення, іконки

Frames у FireMonkey

Frame — це reusable UI-блок.

Frames корисні для:

  • карток;
  • повторюваних блоків;
  • частин екрана;
  • custom controls;
  • форм редагування;
  • dashboard widgets;
  • mobile UI-компонентів.

Приклад ідеї:

CustomerCardFrame
├── LabelName
├── LabelEmail
└── ButtonOpen

FireMonkey і тестування

FMX-застосунки потрібно тестувати на всіх цільових платформах.

Перевіряти потрібно:

  • layout;
  • DPI;
  • шрифти;
  • touch;
  • keyboard;
  • permissions;
  • offline mode;
  • performance;
  • memory usage;
  • API errors;
  • lifecycle;
  • orientation change;
  • deployment.

Особливо важливо тестувати mobile-застосунки на реальних пристроях, а не тільки в designer preview.

FireMonkey і безпека

У FMX-застосунках важливо враховувати:

  • безпечне збереження токенів;
  • HTTPS;
  • перевірку сертифікатів;
  • захист локальної бази;
  • шифрування конфігурації;
  • обмеження доступу до файлів;
  • безпечну авторизацію;
  • logout;
  • permission handling;
  • обробку помилок API;
  • захист персональних даних.

Для mobile особливо важливо не зберігати секрети відкритим текстом.

FireMonkey і сторонні компоненти

Для FMX існують сторонні компоненти.

Типові категорії:

  • UI controls;
  • grids;
  • charts;
  • maps;
  • reports;
  • REST helpers;
  • mobile components;
  • camera helpers;
  • barcode scanning;
  • PDF;
  • styling;
  • controls for dashboards.

Постачальники можуть включати:

  • TMS Software;
  • DevExpress;
  • FastReport;
  • Embarcadero GetIt packages;
  • інші сторонні бібліотеки.

Перед використанням потрібно перевіряти підтримку потрібних платформ.

Переваги FireMonkey

Перевага Пояснення
Кросплатформеність Можна створювати застосунки для кількох платформ
Єдина кодова база Частину логіки й UI можна використовувати повторно
Mobile і desktop Підходить не тільки для Windows desktop
Стилі Можна створювати власний вигляд інтерфейсу
Анімації Є вбудовані механізми анімації
Графіка Підтримка 2D/3D, Canvas, effects
Інтеграція з Delphi Використовує знайому Delphi/Object Pascal екосистему
Підходить для custom UI Добре для нестандартних, branded і touch-friendly інтерфейсів

Недоліки FireMonkey

Недолік Пояснення
Складніше за VCL для класичного Windows desktop Якщо потрібен стандартний Windows UI, VCL часто простіша
Потрібне тестування на кожній платформі Один код не гарантує ідеальну поведінку всюди
Відмінності platform services Android, iOS, macOS і Windows мають різні правила
Можливі нюанси продуктивності Складні стилі, ефекти й списки можуть потребувати оптимізації
Менша legacy-екосистема, ніж у VCL Багато старих Delphi-компонентів були створені саме для VCL
Deployment складніший Mobile і macOS потребують SDK, сертифікатів, підписів і platform setup
Linux залежить від додаткових можливостей Для Linux GUI потрібно перевіряти FMXLinux, редакцію й підтримку

Типові помилки новачків у FireMonkey

Помилка Чому це проблема
Думати, що FMX — це просто VCL для кількох платформ У FMX інша модель rendering, стилів і layout
Не тестувати на реальних пристроях Designer preview не замінює реальне mobile/desktop тестування
Писати всю логіку у формах Проєкт стає важким для підтримки
Ігнорувати DPI і різні екрани UI може погано виглядати на частині пристроїв
Перевантажувати форми компонентами Можливі проблеми продуктивності
Не враховувати permissions Mobile-функції можуть не працювати без правильних дозволів
Зберігати секрети відкритим текстом Це небезпечно для mobile і desktop застосунків

Коли FireMonkey — хороший вибір

Задача Чи підходить FireMonkey?
Cross-platform desktop Добре
Android/iOS бізнес-застосунок Добре
Mobile ERP/CRM клієнт Добре
Custom UI з анімаціями Добре
Touch-friendly desktop Добре
Класичний Windows desktop ERP Можливо, але VCL часто простіша
Підтримка старого VCL-проєкту Краще VCL
Web frontend Не основний вибір
AI/Data Science Не основний вибір

FireMonkey у порівнянні з іншими технологіями

Технологія Порівняння з FireMonkey
VCL VCL краща для класичного Windows desktop, FMX — для multi-device і custom UI
LCL LCL open source і cross-platform desktop, FMX — частина Delphi/RAD Studio
Flutter Flutter популярний для mobile/cross-platform, FMX зручний для Delphi-екосистеми
React Native React Native використовує JavaScript/TypeScript, FMX — Delphi/Object Pascal
Qt Qt сильний у C++ cross-platform, FMX — у Delphi multi-device
Electron Electron використовує web-технології, FMX створює нативні desktop/mobile застосунки

Рекомендований шлях навчання FireMonkey

Етап Що вивчати
1 Основи Object Pascal / Delphi
2 Створення Multi-Device Application
3 TForm, TButton, TLabel, TEdit
4 Події OnClick, OnCreate, OnChange
5 Layout: TLayout, Align, Margins, Padding
6 Styles і FMX Style Designer
7 Lists: TListBox, TListView
8 Робота з images і resources
9 Анімації
10 REST API і JSON
11 SQLite / FireDAC для offline storage
12 Android/iOS permissions
13 Deployment під цільові платформи
14 Тестування на реальних пристроях

Мінімальний набір для першого FMX-проєкту

Компонент Рекомендація
IDE Delphi / RAD Studio
Тип проєкту Multi-Device Application / FireMonkey Application
Перші компоненти TButton, TEdit, TLabel, TLayout
Для layout TLayout, Align, Margins, Padding
Для API REST Client або HTTP client
Для локальних даних SQLite + FireDAC
Для стилів FMX Style Designer
Контроль версій Git

Приклад простої FMX-форми

Ідея:

Форма містить:
- EditName
- ButtonHello
- LabelResult

Користувач вводить імʼя.
Натискає кнопку.
Label показує привітання.

Код:

procedure TMainForm.ButtonHelloClick(Sender: TObject); begin

 LabelResult.Text := 'Привіт, ' + EditName.Text;

end;

Приклад сервісу для FMX-проєкту

unit GreetingService;

interface

type
  TGreetingService = class
  public
    function BuildGreeting(const Name: string): string;
  end;

implementation

function TGreetingService.BuildGreeting(const Name: string): string;
begin
  Result := 'Привіт, ' + Name;
end;

end.

Використання у формі:

procedure TMainForm.ButtonHelloClick(Sender: TObject); var

 Service: TGreetingService;

begin

 Service := TGreetingService.Create;
 try
   LabelResult.Text := Service.BuildGreeting(EditName.Text);
 finally
   Service.Free;
 end;

end;

Простими словами

FireMonkey — це спосіб писати Delphi-застосунки не тільки для Windows.

Якщо VCL — це класична Windows-майстерня Delphi, то FireMonkey — це multi-device майстерня для Windows, macOS, Android, iOS і сучасних візуальних інтерфейсів.

Висновок

FireMonkey — важлива частина сучасної Delphi/RAD Studio екосистеми.

FMX сильний там, де потрібні:

  • кросплатформені застосунки;
  • desktop і mobile з однієї кодової бази;
  • custom UI;
  • стилі;
  • анімації;
  • touch-friendly інтерфейси;
  • мобільні ERP/CRM-клієнти;
  • offline-first бізнес-застосунки;
  • інтеграція з REST API;
  • застосунки для кількох платформ.

FireMonkey не замінює VCL у всіх випадках. Для класичного Windows desktop часто простіше й практичніше використовувати VCL. Але якщо потрібні mobile, macOS, Android, iOS, custom UI або multi-device підхід — FireMonkey є головним шляхом у Delphi-екосистемі.

FireMonkey — це Delphi для світу, де застосунок має жити не на одному Windows-компʼютері, а на різних пристроях і платформах.

Джерела