Малювання на канві (tcanvas) панелі (tpanel) в delphi, asd-soft

Здрастуйте, шановні колеги!

Як малювати на канві TCanvas компонента TPanel - питання, на який я постараюся дати відповідь у цій статті.
Відомо, що компонент TPanel не дозволяє малювати на своїй канві, але є спосіб обійти це обмеження ...

Компонент TPanel як батьківського класу використовує TCustomControl. у якого присутній властивість Canvas і процедура Paint. Обидва вони знаходяться в розділі Protected. що означає що ми не можемо використовувати його безпосередньо, але можемо отримати доступ в дочірньому класі.

Створимо власний клас, успадкувавши його від стандартного TPanel:

Винесемо властивість Canvas в розділ public що б ми могли використовувати його в створених примірниках даного класу.
Замінюємо віртуальний метод Paint.
І додаємо подія OnPaint. яке буде викликатися в методі Paint. який в свою чергу спрацьовує при перемальовуванні компонента.

У розділі implementation опишемо метод Paint:

if Assigned (FOnPaint) then - Якщо присвоєно подія OnPaint. то викличемо його, передавши себе (ключове слово Self) як параметр.

Після запуску можемо спостерігати намальовані гуртки на панелі:

Малювання на канві (tcanvas) панелі (tpanel) в delphi, asd-soft

Вихідні тексти прикладу можна скачати тут: drawpanel.rar

← Курсова робота «Туристична агенція» (MSAccess + Delphi) (Частина 3)

Створення власного помічника (helper) для типів або класів в Delphi. →