FireMonkey
Приклад сервісу для 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 ==
- працювати на кількох платформах;
- мати власну систему 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);
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 == Використання у формі:
│ └── CustomerService.pas │ ├── AuthService.pas == FireMonkey і LiveBindings ==
|- |'''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 ==
{| 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-компоненти ==
- мобільний кабінет клієнта;
- складський термінал;
- польовий застосунок;
- мобільний 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 := 'Готово';
Пояснення
== 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: 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;
|
критично | FireMonkey не виступає як VCL | Багато підходів схожі, але компоненти, rendering, layout і стилі працюють інакше. .fmx
├── Resources/
finally
FooterLayout.Align := TAlignLayout.Bottom;
procedure TMainForm.ButtonHelloClick(Sender: TObject);
ДжерелаShowMessage('Hello from FireMonkey!');
FireMonkey і LCL
Типові події: Натискає кнопку.== Для чого застосовується для FireMonkey ==
| |||
|---|---|---|---|---|---|---|---|---|