Създаване на компонент с прозрачен фон
Всичко за програмирането.
Главно меню
Създаване на компонент с прозрачен фон
Има моменти, когато се нуждаете от компонент с прозрачен фон, който няма да закрива изображението зад него. Какво трябва да направя?
За да направите това, създайте нов контрол, получен например от TGroupBox и обърнете метода му CreateParams, като този:
Добавете манипулатор на съобщения за WM_ERASEBKGND:
Но това важи само за TWinControl. За TGraphicControl не е подходящо анулиране CreateParams (тъй като само TWinControl имат този метод), но трябва да отмените конструктора Създайте. След като извикате наследствения конструктор, трябва да промените ControlStyle управление:
Всъщност прозрачността работи по-добре за TGraphicControl, отколкото за TWinControl. TWinControl ще има проблеми, когато контролата се премести или фона трябва да се промени.
Контролът на контейнера Delphi (като форма или панел) винаги се създава със стила WS_CLIPCHILDREN, което автоматично изключва зоната под контрол на деца от промени, така че фонът няма да бъде модифициран, ако е необходимо. Изтриване на стил WS_CLIPCHILDREN от родителски контрол е възможно с:
Но това може да доведе до прекомерно трептене при актуализации на екрана.