FireMonkey
Приклад у коді:
{| class="wikitable"
Приклад JSON:
│ └── images/ !LCL |- |'''Назва''' |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/ |}
Після створення проєкту розробник отримує:
begin ├── MainForm.pas
== Приклад сервісу для FMX-проєкту ==
Приклад ідеї:<pre>
"customerId": 123,
!Задача
└── Project.dpr
Рекомендації:
!Рекомендація
підключити бізнес-логіку;
!Приклади
Приклад FMX:<pre>
|-
| style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове
|'''FireMonkey створений для multi-platform'''
|FMX надає можливість створювати застосунки для кількох платформ з однієї кодової бази.; │ └── Customer.pas
== Для чого застосовується FireMonkey ==
Перевіряти потрібно:
│ └── DashboardFrame.pas
│ ├── Customer.pas
== Коли FireMonkey — хороший вибір ==
{
!Статус
├── LabelEmail
├── Resources/
!Пояснення
'''TLayout''' — один із важливих контейнерів FMX.;<blockquote>'''FireMonkey — це Delphi для світу, де застосунок має жити не на одному Windows-компʼютері, а на різних пристроях і платформах.'''</blockquote>
|-
|'''Кросплатформеність'''
|Можна створювати застосунки для кількох платформ
|-
|'''Єдина кодова база'''
|Частину логіки й UI можна використовувати повторно
|-
|'''Mobile і desktop'''
|Підходить не тільки для Windows desktop
|-
|'''Стилі'''
|Можна створювати власний вигляд інтерфейсу
|-
|'''Анімації'''
|є собою вбудовані механізми анімації
|-
|'''Графіка'''
|супровід 2D/3D, Canvas, effects
|-
|'''інтеграційні функціональні можливості з Delphi'''
|Використовує знайому Delphi/Object Pascal екосистему
|-
|'''Підходить для custom UI'''
|Добре для нестандартних, branded і touch-friendly інтерфейсів
|}
!Порівняння з FireMonkey
Multi-Device Preview надає можливість перевіряти, як інтерфейс виглядатиме на різних пристроях.; |- |TForm |Форма або основне вікно |- |TButton |Кнопка |- |TLabel |Текстовий напис |- |TEdit |Поле введення |- |TMemo |Багаторядковий текст |- |TListBox |Список |- |TListView |Список для mobile і desktop UI |- |TGrid |Табличне відображення |- |TLayout |Контейнер для розміщення |- |TPanel |Панель |- |TTabControl |Вкладки |- |TToolBar |Панель інструментів |- |TImage |Зображення |- |TRectangle |Прямокутник для UI/графіки |}
ContentLayout.Align := TAlignLayout.Client;
Форми FireMonkey зберігають візуальний характеристика у файлах:
TGreetingService = class
* групування компонентів;
* побудови адаптивного інтерфейсу;
* розміщення блоків;
* створення reusable UI;
* контролю позицій;
* побудови mobile-friendly екранів.; !Компонент
└── ButtonOpen
== Головна ідея FireMonkey ==
* створювати теми;
* редагувати кольори;
* налаштовувати стани компонентів;
* працювати з typography;
* створювати корпоративний стиль;
* адаптувати UI під бренд;
* змінювати вигляд стандартних компонентів.; при появі мережі запускається синхронізація;
Label1.Text := 'Готово';
Приклад ідеї:<pre>
* працювати на кількох платформах;
* мати власну систему rendering;
* підтримувати стилі;
* підтримувати анімації;
* підтримувати 2D і 3D;
* використовувати GPU;
* дозволяти створювати multi-device застосунки;
* бути частиною RAD Studio.; FMX mobile/desktop app
== FireMonkey і графіка ==
== Відмінності Caption і Text ==
│ └── LoginForm.pas
== FireMonkey і FireDAC ==
!Як має змогу допомогти FMX
зібрати застосунок під потрібну платформу.; !FireMonkey
Label1.Caption := 'Готово';
!Помилка
<pre>
Project/
│ ├── MainForm.pas
== Мінімальний набір для першого FMX-проєкту ==
Project/
try
* 3D-сценами;
* 3D-обʼєктами;
* камерами;
* світлом;
* матеріалами;
* трансформаціями;
* обертанням;
* позиціонуванням у просторі.; │ └── OrderRepository.pas
|-
|'''складський облік'''
|Mobile app для сканування й рухів товарів
|-
|'''продажі та реалізація'''
|Замовлення з планшета або телефону
|-
|'''Керівник'''
|Dashboard із показниками
|-
|'''CRM'''
|Мобільна картка клієнта
|-
|'''Сервіс'''
|Польові заявки й статуси
|-
|'''електронний документообіг'''
|Погодження документів
|}
!Пояснення
end;
* мобільна картка клієнта;
* список контактів;
* задачі;
* історичний розвиток взаємодії;
* угоди;
* нотатки;
* нагадування;
* фото або файли;
* інтеграційні функціональні можливості з API;
* offline-доступ.; |-
|Орієнтована на Windows desktop
|Орієнтована на multi-device і cross-platform
|-
|Використовує Windows controls і Windows API
|Має власну систему rendering і стилів
|-
|Дуже сильна для класичних бізнес-систем Windows
|Сильна для custom UI, mobile і multi-platform
|-
|Має величезну legacy-екосистему
|Більш сучасна для нових multi-device інтерфейсів
|-
|Краще для класичних Windows ERP/CRM desktop
|Краще для застосунків, які мають працювати на кількох платформах
|}
FloatAnimation1.StopValue := 1;
!Недолік
Як і в інших UI-framework, оновлювати інтерфейс потрібно з головного потоку.; * FireDAC;
* REST API;
* JSON;
* DataSnap;
* RAD Server;
* SQLite для локальних даних;
* InterBase;
* Firebird;
* PostgreSQL;
* MySQL;
* Microsoft SQL Server;
* Oracle Database.;<blockquote>'''VCL мислить переважно Windows-формами.; try
* не перевантажувати форму компонентами;
* оптимізувати списки;
* використовувати lazy loading;
* обережно застосовувати ефекти;
* тестувати на реальних пристроях;
* не виконувати довгі операції в UI-потоці.; |-
| style="background:#fff3cd; color:#856404; font-weight:bold;" |істотно
|'''FireMonkey не є собою VCL'''
|Багато підходів схожі, але компоненти, rendering, layout і стилі працюють інакше.; FireMonkey був створений як framework, який має змогу:
Типові сценарії:
* OnClick;
* OnCreate;
* OnDestroy;
* OnChange;
* OnTap;
* OnResize;
* OnKeyDown;
* OnMouseDown;
* OnGesture.; !Пояснення
== FireMonkey і анімації ==
|-
|'''Delphi'''
|IDE, компілятор, мова й платформа розробки від Embarcadero
|-
|'''RAD Studio'''
|Середовище, яке охоплює Delphi та C++Builder
|-
|'''VCL'''
|Класична бібліотека компонентів Delphi для Windows desktop
|-
|'''FireMonkey / FMX'''
|Кросплатформена бібліотека компонентів для multi-device застосунків
|-
|'''LCL'''
|Бібліотека компонентів Lazarus, схожа за ідеєю на VCL, але open source
|}
Frames корисні для:
{| class="wikitable"
!Що вивчати
== FireMonkey і macOS ==
Він містить характеристика візуальних компонентів FireMonkey.; Типові значення Align:
- карток;
- повторюваних блоків;
- частин екрана;
- custom controls;
- форм редагування;
- dashboard widgets;
- mobile UI-компонентів.; procedure TForm1.Edit1Change(Sender: TObject);
Для Android-застосунків потрібно враховувати:
- Android SDK;
- JDK;
- target API;
- permissions;
- deployment на пристрій;
- підпис APK/AAB;
- Google Play вимоги;
- продуктивність UI;
- роботу з touch;
- lifecycle застосунку.;== Align і Anchors у FireMonkey ==
├── MainForm.fmx
procedure TMainForm.ButtonHelloClick(Sender: TObject);
- відмінності UI;
- меню;
- keyboard shortcuts;
- sandbox;
- code signing;
- notarization;
- packaging;
- шляхи до файлів;
- поведінку вікон;
- підтримку Retina/DPI.; !Призначення
│ ├── CustomerCardFrame.pas
!Теза
end; FDQuery1.ParamByName('city').AsString := 'Київ';переважні аспекти FireMonkey
Термін
FireMonkey у ERP
|
Чому це проблема
FireMonkey — це спосіб писати Delphi-застосунки не тільки для Windows.; Частіше FMX застосовують для multi-device UI, стилів і mobile/desktop інтерфейсів.;
|
Компонент
Типові компоненти: end; сервер приймає зміни; Це корисно для: Frames у FireMonkey |
FireMonkey
Типова схема:FDQuery1.SQL.Text := 'SELECT * FROM customers WHERE city = :city';
!Пояснення
end;
!Платформа
{| class="wikitable"
);
* зміна прозорості;
* переміщення;
* масштабування;
* обертання;
* зміна кольору;
* плавне відкриття панелі;
* анімація кнопки;
* mobile transitions.; локальна база SQLite;
LiveBindings зручні, але у великих проєктах потрібно уважно контролювати архітектуру, щоб не отримати приховану складність.; Одна з сильних сторін FMX — платформа стилів.; FloatAnimation1.Duration := 0.3;
{| class="wikitable"
Canvas.EndScene;
interface
* clipboard;
* dialogs;
* notifications;
* sensors;
* camera;
* location;
* sharing;
* permissions;
* device information;
* application services.; unit GreetingService;
|-
|'''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-застосунках істотно враховувати:
Можна працювати з:
- ButtonHello
== FireMonkey і Multi-Device Preview ==
Ідея:<pre>
CustomerCardFrame
Файл .fmx містить характеристика компонентів, їхніх властивостей, позицій, стилів і структури форми.; налаштувати layout;
│ └── Order.pas Приклади: Хороша технічна архітектура FMX-проєктуПроте якщо потрібен класичний Windows desktop, стандартні Windows controls і максимальна сумісність зі старими Delphi desktop-проєктами, часто краще підходить VCL.; FMX Style Designer — інструмент для створення й редагування стилів FireMonkey.; Потрібно враховувати: FDQuery1.Open;
ДжерелаFireMonkey і REST API- EditName ├── Storage/ Типовий обмін:Він надає можливість:
begin
== FireMonkey у CRM ==
finally
FireMonkey має 3D-можливості.; MainForm.fmx
* головну форму;
* FMX unit;
* designer;
* палітру FMX-компонентів;
* можливість вибору target platform;
* конфігурація deployment.; .pas
* TFloatAnimation;
* TColorAnimation;
* TPathAnimation;
* TBitmapAnimation.; FloatAnimation1.Start;
{| class="wikitable"
}
Result := 'Привіт, ' + Name;
TThread.Queue(nil,
"status": "active"
створити multi-device application;
інформаційні дані зберігаються локально;
end;
У Delphi FireMonkey-проєкт зазвичай створюється як:<pre>
У великих FMX-проєктах не варто писати всю логіку у формах.;== Приклад простої FMX-форми ==
FloatAnimation1.PropertyName := 'Opacity';
Перед використанням потрібно перевіряти підтримку потрібних платформ.; {| class="wikitable"
Потрібно враховувати:
│ ├── styles/
== Події у FireMonkey ==
→ Database
begin
Рекомендована структура:<pre>
* локальної SQLite-бази;
* мобільного offline storage;
* підключення до backend;
* синхронізації;
* кешування даних;
* бізнес-довідників;
* мобільних ERP/CRM-клієнтів.; ├── Frames/
== FireMonkey і Android ==
'''Frame''' — це reusable UI-блок.; На mobile-платформах застосункам потрібні дозволи.;== FireMonkey і FMX-файли ==
У FMX форма часто має файл:У FMX для тексту часто застосовується властивість:
MainLayout ├── HeaderLayout ├── Forms/ │ └── LocalDatabase.pas FireMonkey має властивості для розміщення елементів.;== FireMonkey у порівнянні з іншими технологіями == {| class="wikitable" == FireMonkey і безпека == end; ├── ContentLayout Код:
FireMonkey і бази данихFireMonkey і 3D
│ └── CustomerService.pas FooterLayout.Align := TAlignLayout.Bottom;
FireMonkey — важлива частина сучасної Delphi/RAD Studio екосистеми.; !Технологія FireMonkey застосовують.; * завантаження даних;
Постачальники можуть включати:
FireMonkey має змогу використовуватись для Linux GUI через FMXLinux або відповідні функціональні можливості редакцій Delphi/RAD Studio.; У 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, FMX, VCL і Delphi
begin Його можна використовувати для:
Використання у формі:
|- |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 є собою альтернативою класичній '''[[VCL]]''', але має іншу філософію.; - LabelResult == Platform Services == FireMonkey добре підходить там, де потрібен не стандартний Windows UI, а власний стиль.; !Етап
- створити FMX-проєкт;
- візуально розмістити компоненти;
- налаштувати властивості;
- призначити події;
- використати styles;
- налаштувати layout для різних екранів;
- зібрати застосунок під потрібну платформу.; FireMonkey, як і VCL, використовує події.; FloatAnimation1.StartValue := 0;
end;
== Рекомендований шлях навчання FireMonkey == ├── Models/
Service.Free;конфлікти обробляються за правилами бізнесу.;
- TRectangle;
- TCircle;
- TLine;
- TPath;
- TImage;
- TText;
- TCanvas.; Приклад обробника кнопки:
Caption !Для чого
ShowMessage('Hello from FireMonkey!');
FireMonkey і custom UI
│ └── SyncService.pas
Що потрібно врахувати
Стилі можуть впливати на:
TCanvas застосовується для малювання.;
VCL і FireMonkey не замінюють одне одного в цілому.; end;
- TMS Software;
- DevExpress;
- FastReport;
- Embarcadero GetIt packages;
- інші сторонні бібліотеки.;== Рекомендовані шари ==
LiveBindings — механізм звʼязування даних із UI-компонентами.;== Коротко ==
FireMonkey і потоки
Розробник має змогу: MainForm.pas
FireMonkey і offline mode
LCL у Lazarus і FireMonkey обидві можуть використовуватись для desktop GUI, але мають різну природу.; Найчастіше використовують:
FireMonkey і permissions
Для FMX існують сторонні компоненти.; додати FMX-компоненти;
│ └── ApiClient.pas HeaderLayout.Align := TAlignLayout.Top; LabelResult.Text := 'Привіт, ' + EditName.Text; Text
TLayout
FireMonkey не без ускладнень копіює VCL.; Для класичного Windows desktop часто простіше й практичніше використовувати VCL.; {| class="wikitable"
- Android permissions;
- iOS Info.plist;
- runtime permission request;
- поведінку при відмові користувача;
- пояснення, навіщо потрібен дозвіл.; Приклади:
end.; FireMonkey — це multi-device і cross-platform напрям Delphi.FireMonkey і тестування
- кольори;
- шрифти;
- фони;
- кнопки;
- поля введення;
- списки;
- стани компонентів;
- hover;
- pressed;
- focused;
- disabled.;== Типові помилки новачків у FireMonkey ==
implementation
FireMonkey і сторонні компоненти
Важливі акценти
FireMonkey має змогу працювати з базами даних через Delphi-бібліотеки доступу до даних.;У FireMonkey зовнішній вигляд компонента значною мірою визначається стилем, а не тільки стандартним виглядом операційної системи.
FireMonkey — це кросплатформений UI-фреймворк Delphi для створення застосунків з однієї кодової бази під кілька платформ.
Button1.Text := 'Зберегти'; FireMonkey підтримує роботу RAD-підхід, як і VCL, але з акцентом на multi-device.; |}
FMX надає можливість створювати desktop-застосунки для macOS.; "name": "Anna",
Складніше за 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, редакцію й підтримку procedure TForm1.PaintBox1Paint(Sender: TObject; Canvas: TCanvas); FireMonkey має вбудовану підтримку анімацій.; FireMonkey має змогу використовуватись для Android та iOS застосунків.; |-
Windows EXE, DLL, ресурси, installer macOS app bundle, signing, notarization Android APK/AAB, SDK, permissions, signing iOS Xcode, certificates, provisioning profiles Linux FMXLinux, залежності, графічне середовище
FireMonkey і mobile
Приклад:
- кількість компонентів;
- складність стилів;
- анімації;
- графічні ефекти;
- робота з великими списками;
- завантаження зображень;
- використання GPU;
- платформа;
- device performance;
- робота в UI-потоці.; Окремо варто відзначити коли потрібно для створення desktop, mobile і multi-device застосунків із графічним інтерфейсом, стилями, анімаціями, векторною графікою, 2D/3D-можливостями і єдиною кодовою базою для кількох платформ.; |-
| style="background:#f8d7da; color:#721c24; font-weight:bold;" |Увага |'''Кросплатформеність потребує тестування''' |Один код не гарантує однакову поведінку UI на всіх платформах без перевірки й адаптації.; Це потрібно, коли застосунок має використовувати функціональні можливості конкретної платформи:
Що означає
- binding полів dataset до компонентів;
- звʼязування обʼєктів із UI;
- швидкого прототипування;
- форм редагування;
- списків і таблиць.;== Простими словами ==
- мобільний кабінет клієнта;
- складський термінал;
- польовий застосунок;
- мобільний CRM-клієнт;
- інвентаризація;
- форма збору даних;
- мобільний dashboard;
- замовник до ERP/API.; !Поняття
Service: TGreetingService;Типові mobile-сценарії: ├── Resources/ ├── Project.dpr → Backend
FireMonkey і RAD-підхід
├── LabelName
Недоліки FireMonkey
Приклад ідеї:
|- |'''Form''' |Вікно або екран застосунку |- |'''Component''' |Візуальний або невізуальний компонент |- |'''Control''' |Елемент інтерфейсу |- |'''Style''' |Оформлення компонента |- |'''Layout''' |Розміщення елементів |- |'''Animation''' |Анімація властивостей |- |'''Effect''' |Графічний ефект |- |'''Scene''' |Візуальна сцена FMX |- |'''Multi-Device Preview''' |Перегляд інтерфейсу для різних пристроїв |}VCL Особливо істотно тестувати mobile-застосунки на реальних пристроях, а не тільки в designer preview.; FireMonkey мислить multi-device інтерфейсами.
Висновок
└── FooterLayout
Приклад структури FireMonkey-проєкту
FireMonkey і deployment
користувач системи вводить імʼя.; !Шар Button1.Caption := 'Зберегти';
procedure
- branded application;
- dashboard;
- touchscreen UI;
- kiosk mode;
- mobile-first інтерфейс;
- візуальні панелі;
- мультимедійні застосунки;
- красиві презентаційні форми;
- адаптивні інтерфейси.; FMX-застосунки потрібно тестувати на всіх цільових платформах.; procedure TMainForm.ButtonHelloClick(Sender: TObject);
- 2D-графіку;
- 3D-графіку;
- векторні елементи;
- прозорість;
- ефекти;
- трансформації;
- масштабування;
- анімації;
- GPU-accelerated rendering.; Deployment у FMX залежить від цільової платформи.; Ці поняття істотно розрізняти.; Label1.Text := 'Готово';
.fmx
- macOS build host;
- Xcode;
- provisioning profiles;
- certificates;
- App Store вимоги;
- deployment на пристрій;
- sandbox;
- permissions;
- lifecycle застосунку.;== Основні FMX-компоненти ==
FMX має змогу бути корисним для CRM-клієнтів:
FireMonkey і VCL
У Linux-сценаріях потрібно перевіряти: FireMonkey не замінює VCL у всіх випадках.; Форма містить:
- сучасних desktop-застосунків;
- touch-friendly UI;
- stylized UI;
- dashboard;
- мультимедійних програм;
- застосунків із нестандартним дизайном;
- multi-device клієнтів.; type
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-сервіси
begin
Label показує привітання.; Приклад запиту:
├── Repositories/ ├── Services/ FMX сильний там, де потрібні: == TCanvas == end; Класичний Delphi багато років був дуже сильним у Windows desktop через VCL.; Головна ідея FireMonkey — дозволити розробнику створювати застосунок один раз і адаптувати його для кількох платформ.; FireMonkey має механізми для роботи з platform services.;
Приклад VCL:
- різні розміри екранів;
- touch input;
- DPI;
- permissions;
- deployment;
- platform services;
- push notifications;
- offline mode;
- роботу з камерою;
- роботу з GPS.; Але з розвитком macOS, iOS, Android і cross-platform розробки виникла потреба в іншій UI-бібліотеці.; Приклад ідеї:<pre>
var │ ├── AuthService.pas Приклад:<pre> Приклади:
Проте для класичних бізнес-застосунків 3D застосовується рідше.;Або як FireMonkey Application, залежно від версії RAD Studio.;== FireMonkey і iOS ==
├── Models/
finally
begin На продуктивність FMX впливають: │ ├── styles/ !ERP-сценарій |- |Forms |Екрани застосунку |- |Frames |Повторно використовувані UI-блоки |- |Services |Бізнес-логіка |- |Repositories |Доступ до даних |- |Api |REST/HTTP-клієнт |- |Storage |Локальне збереження |- |Models |Структури даних |- |Resources |Стилі, зображення, іконки |}
LabelResult.Text := Service.BuildGreeting(EditName.Text);
Для mobile і польових застосунків важливий offline mode.; {| class="wikitable" → REST API
а у VCL для написів часто застосовується:
!Чи підходить FireMonkey?;
|- |Думати, що FMX — це без ускладнень VCL для кількох платформ |У FMX інша модель rendering, стилів і layout |- |Не тестувати на реальних пристроях |Designer preview не замінює реальне mobile/desktop тестування |- |Писати всю логіку у формах |Проєкт стає важким для підтримки |- |Ігнорувати DPI і різні екрани |UI має змогу погано виглядати на частині пристроїв |- |Перевантажувати форми компонентами |Можливі проблеми продуктивності |- |Не враховувати permissions |Mobile-функції можуть не працювати без правильних дозволів |- |Зберігати секрети відкритим текстом |Це небезпечно для mobile і desktop застосунків |}
Типові графічні елементи:
Canvas.DrawLine(PointF(10, 10), PointF(100, 100), 1);
!Як застосовується FireMonkey !Параметр |- |Cross-platform desktop | style="background:#d4edda; color:#155724; font-weight:bold;" |Добре |- |Android/iOS бізнес-застосунок | style="background:#d4edda; color:#155724; font-weight:bold;" |Добре |- |Mobile ERP/CRM замовник | 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;" |Не ключовий вибір |}
Типові події: │ ├── CustomerRepository.pas
Label1.Text := Edit1.Text;
У VCL багато компонентів мають Caption.; FMX має змогу використовуватись як desktop або mobile-клієнт до ERP.;== Історичний розвиток ==
function BuildGreeting(const Name: string): string;
- layout;
- DPI;
- шрифти;
- touch;
- keyboard;
- permissions;
- offline mode;
- performance;
- memory usage;
- API errors;
- lifecycle;
- orientation change;
- deployment.; * мобільний складський облік;
- інвентаризація;
- перегляд залишків;
- мобільні замовлення;
- кабінет менеджера;
- dashboard керівника;
- approval workflow;
- мобільний CRM;
- робоче місце оператора з нестандартним UI.; !Перевага
Приклад ідеї:
Service := TGreetingService.Create; == FMX Application == !Напрям == FireMonkey і LiveBindings == │ └── CustomerRepository.pas користувач системи функціонує без інтернету;
Довгі операції бажано виконувати у фоновому потоці:
├── Repositories/
FireMonkey і LCL
Styles у FireMonkey
├── Api/
FireMonkey має сильні графічні функціональні можливості.; FireMonkey часто порівнюють із VCL.; * доступність FMXLinux;- редакцію RAD Studio;
- deployment;
- графічне середовище;
- залежності;
- шрифти;
- DPI;
- роботу з файлами;
- поведінку UI;
- підтримку потрібних компонентів.; На Windows FMX можна використовувати для:
| Ключове | FireMonkey має власну систему стилів | - | Ключове | FireMonkey підходить для desktop і mobile | class="wikitable"
Типові категорії: public File → New → Multi-Device Application Для iOS-застосунків потрібно враховувати: Основні поняття FireMonkeyCanvas.BeginScene;Код форми зазвичай у:
FireDAC — основна сучасна бібліотека доступу до баз даних у Delphi.; це кросплатформена бібліотека візуальних компонентів і application framework; додатково реалізовано C++Builder та RAD Studio виступає ключовою рисою Delphi забезпечується через FireMonkey або FMX.; Натискає кнопку.; * None;
FireMonkey і продуктивність
|