Створення компонента з прозорим фоном

Все про програмування.

Головне меню

Створення компонента з прозорим фоном

Трапляються випадки, коли Вам знадобився компонент із прозорим фоном, який не загороджуватиме зображення позаду нього. Що для цього потрібно зробити?

Щоб зробити це, створіть нове управління, отримане, наприклад відTGroupBox і скасуйте його методCreateParams, подібно до цього:

Додати обробник повідомлення дляWM_ERASEBKGND :

Але це справедливо лише дляTWinControl. ДляTGraphicControl не підходить скасуванняCreateParams (оскільки тількиTWinControl мають цей метод), а потрібно скасувати конструкторCreate. Після виклику успадкованого конструктора, потрібно змінитиControlStyle управління:

Фактично, прозорість працює краще дляTGraphicControl, ніж дляTWinControl.TWinControl матиме проблеми, коли керування буде переміщене або фон повинен змінитися.

Контейнерне керування Delphi (типу форми або панелі) завжди створюється зі стилемWS_CLIPCHILDREN, який автоматично виключає область під дочірнім керуванням від змін, тому фон не буде модифікуватися, якщо потрібно. Видалення стилюWS_CLIPCHILDREN з батьківського управління можливе з:

Але це може призвести до надмірного мерехтіння під час оновлення екрана.