Підхід
Рекомендована структура:
* групування елементів;
* створення layout;
* панелей інструментів;
* зон форми;
* відокремлення блоків інтерфейсу.== Важливі акценти ==
Типова схема:<pre>
end;
!Подія
│ └── Invoice.pas
<blockquote>'''Object Inspector — це місце, де компонент налаштовується без ручного редагування всього коду.'''</blockquote>
Caption = 'Main Form'
Типові задачі:
Data-aware компоненти — одна з причин, чому Delphi/VCL був таким сильним для облікових і бізнес-систем.
end;
- SQL-запити;
- індекси в базі;
- кількість рядків у grids;
- завантаження даних;
- робота в UI-потоці;
- сторонні компоненти;
- rendering;
- робота з файлами;
- мережеві затримки;
- кешування. Приклад:
|-
|'''Тільки Windows'''
|VCL не виступає як cross-platform UI-бібліотекою
|-
|'''Legacy-репутація'''
|Часто асоціюється зі старими Delphi-системами
|-
|'''Ризик великих форм'''
|Без архітектури форми стають занадто складними
|-
|'''Залежність від Delphi/RAD Studio'''
|Повноцінна робота повʼязана з комерційною екосистемою Embarcadero
|-
|'''Менше нових розробників'''
|Молодші розробники частіше обирають web, Python, JavaScript, C#
|-
|'''Не підходить для web frontend'''
|Для web frontend потрібні JavaScript/TypeScript
|-
|'''Не базовий вибір для mobile'''
|Для mobile у Delphi застосовується для FMX або інші технології
|}
Приклад:<pre>
Приклад:VCL дуже часто використовувалася для ERP-систем. VCL-застосунки часто інтуїтивно розгортати у Windows-середовищі. 'SELECT * FROM users WHERE name = ''' + EditName.Text + '''';
- списків клієнтів;
- товарів;
- документів;
- замовлень;
- залишків;
- платежів;
- довідників. !Призначення
Це критично при:
DBEditName.DataSource := DataSource1;
- один EXE-файл;
- EXE + DLL;
- EXE + конфігураційні файли;
- інсталятор;
- portable-версія;
- мережеве розгортання;
- auto-update;
- terminal server;
- RemoteApp.== Рекомендований шлях навчання VCL ==
== TMemo ==
ShowMessage('Hello from VCL!');
finally
Label показує привітання. |-
| style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове
|'''VCL підтримує RAD-підхід'''
|Форми можна створювати візуально через дизайнер Delphi. '''TLabel''' — текстовий напис. → DBGridCustomers
== Проблеми старих VCL-проєктів ==
- advanced grid;
- ribbon;
- scheduler;
- pivot grid;
- reports;
- charts;
- layout controls;
- editors;
- themes;
- printing. FDQueryCustomers
{| class="wikitable"
- використовувати фільтри;
- пагінацію;
- пошук;
- обмеження вибірки;
- індекси;
- background loading. Це інтуїтивно, коли одна дія доступна в кількох місцях інтерфейсу. begin
== VCL і сторонні компоненти ==
Код:Memo1.Align := alClient;
Модернізація VCL не обовʼязково означає повне переписування. Result := 'Привіт, ' + Name;
!LCL
!Пояснення
- великі форми;
- багато бізнес-логіки у подіях;
- старі компоненти;
- старі бази даних;
- складні SQL-запити;
- інтеграції з обладнанням;
- звіти;
- локальні конфігурація;
- залежність від Windows API. |-
| style="background:#fff3cd; color:#856404; font-weight:bold;" |критично
|'''VCL не виступає як cross-platform бібліотекою'''
|Для кросплатформеності в Delphi застосовують, коли потрібно FireMonkey / FMX. Delphi запропонував інший підхід:
InvoiceService.SaveInvoice(CurrentInvoice);
!Термін
{
VCL побудована поверх Windows API. Натискає кнопку. {| class="wikitable"
end;
- Name;
- Caption;
- Text;
- Width;
- Height;
- Left;
- Top;
- Align;
- Anchors;
- Font;
- Color;
- Enabled;
- Visible;
- TabOrder.<pre>
Навколо VCL існує велика ERP-платформа сторонніх компонентів. ├── DataModules/
|-
|'''Логіка у формах'''
|Бізнес-правила змішані з UI
|-
|'''Великі форми'''
|Один form unit здатна містити тисячі рядків коду
|-
|'''Старі компоненти'''
|Частина бібліотек здатна не підтримуватися
|-
|'''Залежність від Windows API'''
|Ускладнює міграцію
|-
|'''Старі бази даних'''
|Можуть використовуватись застарілі драйвери або схеми
|-
|'''Відсутність тестів'''
|Будь-яка зміна ризикована
|-
|'''Немає документації'''
|Систему важко підтримувати новим розробникам
|}
== VCL і DPI ==
Він здатна включати:
Підходи:
VCL має властивості для розміщення компонентів. {| class="wikitable"
VCL історично дуже сильна в роботі з базами даних. begin
begin
!Порівняння з VCL
├── Reports/
implementation
Можливі варіанти:
Типові властивості:
VCL і друк
Кращий підхід:При модернізації старих Delphi-проєктів часто потрібно перевірити:
== VCL і оновлення версій застосунків ==
Button := TButton.Create(Self);
Властивості визначають стан і вигляд компонента.== Типові помилки новачків у VCL ==
Компоненти можна створювати не тільки через дизайнер, а й вручну. Label1.Caption := 'Готово';
!Рекомендація
|-
|'''оновлення версій Delphi'''
|Перехід на сучасну версію RAD Studio
|-
|'''Рефакторинг форм'''
|Зменшення коду у формах
|-
|'''Винесення бізнес-логіки'''
|Перенесення правил у сервіси
|-
|'''оновлення версій доступу до БД'''
|Перехід на FireDAC або сучасні драйвери
|-
|'''Додавання API'''
|Створення REST-шару для інтеграцій
|-
|'''оновлення версій UI'''
|Стилі, DPI, сучасні компоненти
|-
|'''Поступова заміна модулів'''
|Модернізація по частинах
|-
|'''Документація'''
|SEO-опис форм, таблиць, бізнес-правил
|}
procedure TForm1.Button1Click(Sender: TObject);
Це корисно для глибшої інтеграції з Windows.== Хороша технічна архітектура VCL-проєкту ==
конкурентні переваги VCL
VCL підходить для desktop CRM-систем. |-
|