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

FireMonkey

Матеріал з K2 ERP Wiki

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

│ ├── CustomerRepository.pas

.fmx │ └── images/ FireMonkey здатна використовуватись для Android та iOS застосунків. ├── Models/

TCanvas застосовується для для малювання. |}

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

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

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

FMX здатна використовуватись як desktop або mobile-клієнт до ERP. └── Project.dpr

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

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

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

FireMonkey має властивості для розміщення елементів. FireMonkey мислить multi-device інтерфейсами. Приклад:

.pas
FloatAnimation1.Duration := 0.3;
├── Resources/

Код:

Це потрібно, коли застосунок має використовувати функції ERP конкретної платформи: == FireMonkey і сторонні компоненти == │ ├── Customer.pas begin

FDQuery1.Open; end;

!Порівняння з FireMonkey

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

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

FireMonkey і анімації

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

  • кольори;
  • шрифти;
  • фони;
  • кнопки;
  • поля введення;
  • списки;
  • стани компонентів;
  • hover;
  • pressed;
  • focused;
  • disabled. FireMonkey, як і VCL, використовує події. Приклад ідеї:

└── ButtonOpen Класичний Delphi багато років був дуже сильним у Windows desktop через VCL. FMX дає можливість створювати desktop-застосунки для macOS.== Мінімальний набір для першого FMX-проєкту == підключити бізнес-логіку; Це корисно для: Button1.Text := 'Зберегти'; {| class="wikitable" HeaderLayout.Align := TAlignLayout.Top; Після створення проєкту розробник отримує: * локальної SQLite-бази; * мобільного offline storage; * підключення до backend; * синхронізації; * кешування даних; * бізнес-довідників; * мобільних ERP/CRM-клієнтів. │ └── OrderRepository.pas * Android permissions; * iOS Info.plist; * runtime permission request; * поведінку при відмові користувача; * пояснення, навіщо потрібен дозвіл. Для mobile особливо критично не зберігати секрети відкритим текстом. begin !Компонент !Пояснення описати події; │ ├── MainForm.pas {| class="wikitable" створити multi-device application; end; - LabelResult * None; * Top; * Bottom; * Left; * Right; * Client; * Center; * Contents; * Fit; * FitLeft; * FitRight; * Scale. конфлікти обробляються за правилами бізнесу. Типова схема:<pre> Одна з сильних сторін FMX — платформа стилів.<blockquote>'''FireMonkey — це кросплатформений UI-фреймворк Delphi для створення застосунків з однієї кодової бази під кілька платформ.'''</blockquote> TThread.Queue(nil, │ └── Order.pas FloatAnimation1.StartValue := 0; !Приклади |- |Open source бібліотека Lazarus |Комерційна Delphi/RAD Studio ERP-платформа |- |функціонує через widgetsets |Має власну систему rendering |- |Орієнтована на Free Pascal |Орієнтована на Delphi/C++Builder |- |Добра для open source cross-platform desktop |Добра для multi-device, mobile, styled UI |} !FireMonkey

function TGreetingService.BuildGreeting(const Name: string): string;

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

== Frames у FireMonkey ==
MainForm.fmx
{
 Service: TGreetingService;
Форма містить:

<pre>
├── MainForm.pas

!LCL

* OnClick;
* OnCreate;
* OnDestroy;
* OnChange;
* OnTap;
* OnResize;
* OnKeyDown;
* OnMouseDown;
* OnGesture. try
FireMonkey підтримує RAD-підхід, як і VCL, але з акцентом на multi-device.

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

FireMonkey і deployment

!Компонент |- |складський облік |Mobile app для сканування й рухів товарів |- |продажі та реалізація |Замовлення з планшета або телефону |- |Керівник |Dashboard із показниками |- |CRM |Мобільна картка клієнта |- |Сервіс |Польові заявки й статуси |- |електронний документообіг |Погодження документів |}

FireMonkey часто порівнюють із VCL.== FireMonkey і iOS == !Помилка

Service.Free;

Приклади: procedure TForm1.Button1Click(Sender: TObject); !Платформа Для Android-застосунків потрібно враховувати:

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

├── HeaderLayout Приклад у коді:<pre> !Технологія == FireMonkey і permissions == == FireMonkey і Linux == MainForm.pas

Приклад VCL:

!Чи підходить FireMonkey? * мобільний складський облік;

  • інвентаризація;
  • перегляд залишків;
  • мобільні замовлення;
  • кабінет менеджера;
  • dashboard керівника;
  • approval workflow;
  • мобільний CRM;
  • робоче місце оператора з нестандартним UI.

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

FireMonkey здатна використовуватись для Linux GUI через FMXLinux або відповідні функції ERP редакцій Delphi/RAD Studio. FireMonkey — це спосіб писати Delphi-застосунки не тільки для Windows. FMX здатна бути корисним для CRM-клієнтів: Потрібно враховувати:
  • створювати теми;
  • редагувати кольори;
  • налаштовувати стани компонентів;
  • працювати з typography;
  • створювати корпоративний стиль;
  • адаптувати UI під бренд;
  • змінювати вигляд стандартних компонентів.== FireMonkey і REST API ==
│ └── LocalDatabase.pas ├── ContentLayout
  • працювати на кількох платформах;
  • мати власну систему rendering;
  • підтримувати стилі;
  • підтримувати анімації;
  • підтримувати 2D і 3D;
  • використовувати GPU;
  • дозволяти створювати multi-device застосунки;
  • бути частиною RAD Studio. Можна працювати з:
Типові категорії:

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

  • clipboard;
  • dialogs;
  • notifications;
  • sensors;
  • camera;
  • location;
  • sharing;
  • permissions;
  • device information;
  • application services.== FireMonkey і 3D ==

);

FMX Application

procedure TForm1.Edit1Change(Sender: TObject);

├── Project.dpr

FireMonkey і FMX-файли

TGreetingService = class
Що вивчати

} │ └── CustomerRepository.pas

├── LabelName

У Delphi FireMonkey-проєкт зазвичай створюється як:
{| class="wikitable"
!Як здатна допомогти FMX
!Перевага
{| class="wikitable"
Button1.Caption := 'Зберегти';
FloatAnimation1.Start;
begin
FireMonkey має сильні графічні функції ERP. procedure TForm1.PaintBox1Paint(Sender: TObject; Canvas: TCanvas);
У FMX-застосунках критично враховувати:
- ButtonHello
|-
|'''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
|}

Він дає можливість: Style дає можливість змінювати вигляд компонентів без повного переписування логіки.== Основні поняття FireMonkey ==

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

!Що означає

  • кросплатформені застосунки;
  • desktop і mobile з однієї кодової бази;
  • custom UI;
  • стилі;
  • анімації;
  • touch-friendly інтерфейси;
  • мобільні ERP/CRM-клієнти;
  • offline-first бізнес-застосунки;
  • інтеграційні функції ERP з REST API;
  • застосунки для кількох платформ. У FireMonkey частіше застосовується для <code>Text</code>. Result := 'Привіт, ' + Name;

│ └── CustomerService.pas │ ├── AuthService.pas

== FireMonkey і LiveBindings ==

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

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

'''FMX Style Designer''' — інструмент для створення й редагування стилів FireMonkey. !Задача FMX mobile/desktop app end; FDQuery1.SQL.Text := 'SELECT * FROM customers WHERE city = :city'; !ERP-сценарій

end;

!Призначення Типові компоненти:

Frames корисні для: інформаційні дані зберігаються локально; == FireMonkey і mobile == Його можна використовувати для: На Windows FMX можна використовувати для: {| class="wikitable" Ці поняття критично розрізняти. {| class="wikitable" │ └── LoginForm.pas

end

|- | style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове |'''FireMonkey створений для multi-platform''' |FMX дає можливість створювати застосунки для кількох платформ з однієї кодової бази. Text == Важливі акценти == |- |'''Form''' |Вікно або екран застосунку |- |'''Component''' |Візуальний або невізуальний компонент |- |'''Control''' |Елемент інтерфейсу |- |'''Style''' |Оформлення компонента |- |'''Layout''' |Розміщення елементів |- |'''Animation''' |Анімація властивостей |- |'''Effect''' |Графічний ефект |- |'''Scene''' |Візуальна сцена FMX |- |'''Multi-Device Preview''' |Перегляд інтерфейсу для різних пристроїв |}

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

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

{| class="wikitable" == FireMonkey і Android == Label показує привітання. |- |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 |Тестування на реальних пристроях |}

Або як FireMonkey Application, залежно від версії RAD Studio. Типові значення Align:
FireMonkey

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

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

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

unit GreetingService;

при появі мережі запускається синхронізація; ├── MainForm.fmx

function BuildGreeting(const Name: string): string;

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

Для mobile критично враховувати:

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

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

Приклад:

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

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

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

LabelResult.Text := Service.BuildGreeting(EditName.Text);

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

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

| style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове |FireMonkey має власну систему стилів

|UI можна оформлювати незалежно від стандартного вигляду ОС. це кросплатформена бібліотека візуальних компонентів і application framework; так само реалізовано C++Builder та RAD Studio виступає ключовою рисою Delphi забезпечується через FireMonkey або FMX.

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

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


== FireMonkey, FMX, VCL і Delphi ==

* 2D-графіку;
* 3D-графіку;
* векторні елементи;
* прозорість;
* ефекти;
* трансформації;
* масштабування;
* анімації;
* GPU-accelerated rendering.<blockquote>'''VCL мислить переважно Windows-формами. |-
| style="background:#f8d7da; color:#721c24; font-weight:bold;" |Увага
|'''Кросплатформеність потребує тестування'''
|Один код не гарантує однакову поведінку UI на всіх платформах без перевірки й адаптації. Але з розвитком macOS, iOS, Android і cross-platform розробки виникла потреба в іншій UI-бібліотеці.== Недоліки FireMonkey ==
 "customerId": 123,

File → New → Multi-Device Application

* layout;
* DPI;
* шрифти;
* touch;
* keyboard;
* permissions;
* offline mode;
* performance;
* memory usage;
* API errors;
* lifecycle;
* orientation change;
* deployment.== Історія K2 ERP ==

* кількість компонентів;
* складність стилів;
* анімації;
* графічні ефекти;
* робота з великими списками;
* завантаження зображень;
* використання GPU;
* платформа;
* device performance;
* робота в UI-потоці. │ └── DashboardFrame.pas
FMX сильний там, де потрібні:

У VCL багато компонентів мають <code>Caption</code>. finally

* TRectangle;
* TCircle;
* TLine;
* TPath;
* TImage;
* TText;
* TCanvas. * не перевантажувати форму компонентами;
* оптимізувати списки;
* використовувати lazy loading;
* обережно застосовувати ефекти;
* тестувати на реальних пристроях;
* не виконувати довгі операції в UI-потоці.== Висновок ==

* TMS Software;
* DevExpress;
* FastReport;
* Embarcadero GetIt packages;
* інші сторонні бібліотеки. * відмінності UI;
* меню;
* keyboard shortcuts;
* sandbox;
* code signing;
* notarization;
* packaging;
* шляхи до файлів;
* поведінку вікон;
* підтримку Retina/DPI. Частіше FMX застосовують для multi-device UI, стилів і mobile/desktop інтерфейсів. Але якщо потрібні mobile, macOS, Android, iOS, custom UI або multi-device підхід — FireMonkey виступає як головним шляхом у Delphi-екосистемі.== FireMonkey і VCL ==

'''Frame''' — це reusable UI-блок.== Рекомендований шлях навчання FireMonkey ==
Проте для класичних бізнес-застосунків 3D застосовується для рідше. FireMonkey застосовують, коли потрібно для створення desktop, mobile і multi-device застосунків із графічним інтерфейсом, стилями, анімаціями, векторною графікою, 2D/3D-можливостями та єдиною кодовою базою для кількох платформ. begin
LiveBindings зручні, але у великих проєктах потрібно уважно контролювати архітектуру, щоб не отримати приховану складність. Для FMX існують сторонні компоненти. Типові сценарії:
== Хороша технічна архітектура FMX-проєкту ==
FloatAnimation1.PropertyName := 'Opacity';
Приклад ідеї:<pre>
<blockquote>'''VCL — це класичний Windows desktop у Delphi. Label1.Text := Edit1.Text;
Типові mobile-сценарії:
Project/
== Styles у FireMonkey ==
'''FireMonkey''' — важлива частина сучасної Delphi/RAD Studio екосистеми. |-
| style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове
|'''FireMonkey підходить для desktop і mobile'''
|Його можна використовувати для Windows, macOS, Android, iOS та інших підтримуваних платформ. FloatAnimation1.StopValue := 1;
Label1.Caption := 'Готово';
'''FireDAC''' — основна сучасна бібліотека доступу до баз даних у Delphi. '''LiveBindings''' — механізм звʼязування даних із UI-компонентами. Вони вирішують різні задачі.'''</blockquote>
Приклад обробника кнопки:<pre>
|-
|'''Кросплатформеність'''
|Можна створювати застосунки для кількох платформ
|-
|'''Єдина кодова база'''
|Частину логіки й UI можна використовувати повторно
|-
|'''Mobile і desktop'''
|Підходить не тільки для Windows desktop
|-
|'''Стилі'''
|Можна створювати власний вигляд інтерфейсу
|-
|'''Анімації'''
|виступає як вбудовані механізми анімації
|-
|'''Графіка'''
|технічна підтримка 2D/3D, Canvas, effects
|-
|'''інтеграційні функції ERP з Delphi'''
|Використовує знайому Delphi/Object Pascal екосистему
|-
|'''Підходить для custom UI'''
|Добре для нестандартних, branded і touch-friendly інтерфейсів
|}

{| class="wikitable"
│ ├── CustomerCardFrame.pas
<blockquote>'''У FireMonkey зовнішній вигляд компонента значною мірою визначається стилем, а не тільки стандартним виглядом операційної системи.'''</blockquote>
├── Forms/
|-
|'''Складніше за 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, редакцію й підтримку
|}

├── Storage/
FMX-застосунки часто працюють із REST API. FireMonkey — це multi-device і cross-platform напрям Delphi.'''</blockquote>
|-
|Орієнтована на Windows desktop
|Орієнтована на multi-device і cross-platform
|-
|Використовує Windows controls і Windows API
|Має власну систему rendering і стилів
|-
|Дуже сильна для класичних бізнес-систем Windows
|Сильна для custom UI, mobile і multi-platform
|-
|Має величезну legacy-екосистему
|Більш сучасна для нових multi-device інтерфейсів
|-
|Краще для класичних Windows ERP/CRM desktop
|Краще для застосунків, які мають працювати на кількох платформах
|}
зібрати застосунок під потрібну платформу. !Для чого
FireMonkey не замінює VCL у всіх випадках. FMX-застосунки потрібно тестувати на всіх цільових платформах. Стилі можуть впливати на:

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

== FireMonkey і FireDAC == !Теза └── README.md == FireMonkey і RAD-підхід == == FireMonkey і offline mode == Project/ end;

  • завантаження даних;
  • запити до API;
  • обробка файлів;
  • синхронізація;
  • імпорт/експорт;
  • розрахунки. ├── LabelEmail
  • branded application;
  • dashboard;
  • touchscreen UI;
  • kiosk mode;
  • mobile-first інтерфейс;
  • візуальні панелі;
  • мультимедійні застосунки;
  • красиві презентаційні форми;
  • адаптивні інтерфейси. !Як застосовується для FireMonkey

Типові графічні елементи: ├── Api/ │ └── images/ == FireMonkey і бази даних ==

end;
procedure

== Відмінності Caption і Text == │ └── SyncService.pas <pre> ├── Services/

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

FMX Style Designer

"status": "active"

end;

  • карток;
  • повторюваних блоків;
  • частин екрана;
  • custom controls;
  • форм редагування;
  • dashboard widgets;
  • mobile UI-компонентів. FireMonkey здатна працювати з базами даних через Delphi-бібліотеки доступу до даних.== Основні FMX-компоненти ==
implementation type
  • мобільний кабінет клієнта;
  • складський термінал;
  • польовий застосунок;
  • мобільний CRM-клієнт;
  • інвентаризація;
  • форма збору даних;
  • мобільний dashboard;
  • клієнт ERP до ERP/API.

конкурентні переваги FireMonkey

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

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

├── Repositories/

  • опрацьовувати помилки мережі;
  • враховувати offline mode;
  • зберігати токени безпечно;
  • оновлювати інформаційні дані фоново;
  • показувати loading states;
  • синхронізувати конфлікти.== FireMonkey і Windows ==
Довгі операції бажано виконувати у фоновому потоці:

procedure TMainForm.ButtonHelloClick(Sender: TObject); Caption Проте якщо потрібен класичний Windows desktop, стандартні Windows controls і максимальна сумісність зі старими Delphi desktop-проєктами, часто краще підходить VCL. │ ├── styles/ Як і в інших UI-framework, оновлювати інтерфейс потрібно з головного потоку. Перевіряти потрібно:

Label1.Text := 'Готово';
Пояснення
  • camera;
  • location;
  • storage;
  • microphone;
  • notifications;
  • network;
  • Bluetooth.
Приклад ідеї:
== FireMonkey у ERP ==
Для mobile і польових застосунків важливий offline mode. !Напрям
|-
|'''Думати, що FMX — це без зусиль VCL для кількох платформ'''
|У FMX інша модель rendering, стилів і layout
|-
|'''Не тестувати на реальних пристроях'''
|Designer preview не замінює реальне mobile/desktop тестування
|-
|'''Писати всю логіку у формах'''
|Проєкт стає важким для підтримки
|-
|'''Ігнорувати DPI і різні екрани'''
|UI здатна погано виглядати на частині пристроїв
|-
|'''Перевантажувати форми компонентами'''
|Можливі проблеми продуктивності
|-
|'''Не враховувати permissions'''
|Mobile-функції можуть не працювати без правильних дозволів
|-
|'''Зберігати секрети відкритим текстом'''
|Це небезпечно для mobile і desktop застосунків
|}

!Поняття
Приклад запиту:<pre>
│ └── Customer.pas
== Приклад простої FMX-форми ==
|-
|Cross-platform desktop
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|-
|Android/iOS бізнес-застосунок
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|-
|Mobile ERP/CRM клієнт ERP
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|-
|Custom UI з анімаціями
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|-
|Touch-friendly desktop
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|-
|Класичний Windows desktop ERP
| style="background:#fff3cd; color:#856404; font-weight:bold;" |Можливо, але VCL часто простіша
|-
|технічна підтримка старого VCL-проєкту
| style="background:#f8d7da; color:#721c24; font-weight:bold;" |Краще VCL
|-
|Web frontend
| style="background:#f8d7da; color:#721c24; font-weight:bold;" |Не базовий вибір
|-
|AI/Data Science
| style="background:#f8d7da; color:#721c24; font-weight:bold;" |Не базовий вибір
|}

- EditName FDQuery1.ParamByName('city').AsString := 'Київ';

Приклад FMX:
|-
|'''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 застосунки
|}

begin
== Align і Anchors у FireMonkey ==
Ідея:<pre>
користувач системи вводить імʼя.
Приклад JSON:

<blockquote>'''VCL і FireMonkey не замінюють одне одного на 100%. Для iOS-застосунків потрібно враховувати: → REST API

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

FireMonkey не без зусиль копіює VCL.== TCanvas ==

var

Статус

FireMonkey і custom UI

│ ├── styles/ На mobile-платформах застосункам потрібні дозволи. !Шар

Типова схема:
!Пояснення
{| class="wikitable"
== FireMonkey у CRM ==
== FireMonkey і безпека ==

== FireMonkey і графіка ==
 Service := TGreetingService.Create;

CustomerCardFrame

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

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

!Рекомендація
== FireMonkey і Multi-Device Preview ==

== TLayout ==
→ Backend
== Події у FireMonkey ==
додати FMX-компоненти;
Label1.Text := 'Готово';
 Canvas.DrawLine(PointF(10, 10), PointF(100, 100), 1);
!Що потрібно врахувати
{| class="wikitable"

Особливо критично тестувати mobile-застосунки на реальних пристроях, а не тільки в designer preview. end. FireMonkey має вбудовану підтримку анімацій. Якщо VCL орієнтована на Windows desktop, то FireMonkey створювався як кросплатформений framework для Windows, macOS, iOS, Android та інших підтримуваних платформ. !Недолік

* TFloatAnimation;
* TColorAnimation;
* TPathAnimation;
* TBitmapAnimation. У великих FMX-проєктах не варто писати всю логіку у формах. FireMonkey зʼявився в екосистемі Embarcadero як відповідь на потребу створювати застосунки не тільки для Windows, а й для інших платформ. * різні розміри екранів;
* touch input;
* DPI;
* permissions;
* deployment;
* platform services;
* push notifications;
* offline mode;
* роботу з камерою;
* роботу з GPS. ├── Models/
!Етап

'''TLayout''' — один із важливих контейнерів FMX. Головна ідея FireMonkey — дозволити розробнику створювати застосунок один раз і адаптувати його для кількох платформ. ├── Repositories/
Приклад ідеї:<pre>

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

* binding полів dataset до компонентів;
* звʼязування обʼєктів із UI;
* швидкого прототипування;
* форм редагування;
* списків і таблиць. "name": "Anna",
Multi-Device Preview дає можливість перевіряти, як інтерфейс виглядатиме на різних пристроях. end;

* мобільна картка клієнта;
* список контактів;
* задачі;
* історія продукту взаємодії;
* угоди;
* нотатки;
* нагадування;
* фото або файли;
* інтеграційні функції ERP з API;
* offline-доступ. Для класичного Windows desktop часто простіше й практичніше використовувати VCL. LCL у Lazarus і FireMonkey обидві можуть використовуватись для desktop GUI, але мають різну природу. {| class="wikitable"
!Чому це проблема
== FireMonkey і macOS ==
ContentLayout.Align := TAlignLayout.Client;
== Типові помилки новачків у FireMonkey ==

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

Він застосовується для для:

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

сервер приймає зміни;

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

Файл .fmx містить SEO-опис компонентів, їхніх властивостей, позицій, стилів і структури форми. * доступність FMXLinux;
  • редакцію RAD Studio;
  • deployment;
  • графічне середовище;
  • залежності;
  • шрифти;
  • DPI;
  • роботу з файлами;
  • поведінку UI;
  • підтримку потрібних компонентів. |-
критично FireMonkey не виступає як VCL Багато підходів схожі, але компоненти, rendering, layout і стилі працюють інакше. .fmx ├── Resources/ finally FooterLayout.Align := TAlignLayout.Bottom; procedure TMainForm.ButtonHelloClick(Sender: TObject);

Джерела

ShowMessage('Hello from FireMonkey!');
FireMonkey добре підходить там, де потрібен не стандартний Windows UI, а власний стиль. FireMonkey виступає як альтернативою класичній VCL, але має іншу філософію. {| class="wikitable" Canvas.EndScene;
  • телефонів;
  • планшетів;
  • desktop;
  • різних орієнтацій;
  • різних розмірів екрана;
  • перевірки layout;
  • адаптації UI. !Значення

FireMonkey і LCL

Перед використанням потрібно перевіряти підтримку потрібних платформ.а у VCL для написів часто застосовується для:

Коротко

користувач системи функціонує без інтернету;

  • FireDAC;
  • REST API;
  • JSON;
  • DataSnap;
  • RAD Server;
  • SQLite для локальних даних;
  • InterBase;
  • Firebird;
  • PostgreSQL;
  • MySQL;
  • Microsoft SQL Server;
  • Oracle Database. FireMonkey був створений як framework, який здатна:

Типові події: Натискає кнопку.== Для чого застосовується для FireMonkey ==

  • сучасних desktop-застосунків;
  • touch-friendly UI;
  • stylized UI;
  • dashboard;
  • мультимедійних програм;
  • застосунків із нестандартним дизайном;
  • multi-device клієнтів. |-
Ключове FireMonkey підтримує графіку й анімації FMX сильніший за VCL у візуальних ефектах, стилях і custom UI. Він має власну систему rendering, стилів, анімацій і layout, тому підхід до створення інтерфейсу в FMX відрізняється від класичного Windows desktop-підходу. Розробник здатна:

налаштувати layout;