Delphi sources, статті - створення власної кнопки в delphi

Приступимо до справи. Припустимо проект, для якого ми створюємо кнопку, вже відкритий. Для початку створимо новий модуль (File \ New \ Unit). Давайте відразу збережемо модуль (натиснувши Ctrl + Shift + S) під ім'ям MyButtonUnit. У модулі ми бачимо два розділи: interface і implementation. У першому розділі ми будемо описувати Plug-in, типи даних, процедури, константи і змінні, а в другому буде перебувати сам код.







Після interface опишемо модулі, які нам знадобляться. Це виглядає так:

interface
uses Classes, Controls, Windows, Graphics, Messages;

Після цього необхідно описати створюваний нами новий клас (TMyButton), в основу якого буде покладено клас TCustomControl.


Ви бачите три розділи нашого класу: private, protected і public. У першому описуються змінні і процедури, які будуть доступні для використання тільки в межах даного класу. У розділі protected описуються методи, реалізовані в батьківському класі. І нарешті, третій розділ містить опис властивостей і процедур, які будуть доступні за межами даного класу.

Почнемо з розділу public.
Наведемо конструктор: constructor Create (AOwner: TComponent);
Перейдемо до розділу implementation і напишемо код, який буде виконуватися при створенні кнопки.

Я привів обов'язкову частину коду. Ви ж можете доповнити його при необхідності.

Зараз саме час подумати про те, як буде працювати кнопка. Наша кнопка повинна змінювати зображення при наведенні на неї. Вона обов'язково повинна містити напис. Це мінімум! Раз кнопка буде змінювати зовнішній вигляд при наведенні на неї, то в розділі private опишемо змінну FSelected. Boolean; для зберігання стану кнопки. Отрисовкой кнопки займемося пізніше. У тому ж розділі опишемо змінну FCaption. String ;, яка зберігає напис на кнопці. Для того, щоб напис можна було змінювати опишемо property Caption: String read FCaption write SetCaption; в розділі public. Як Ви помітили, процедуру SetCaption ми ще не створили. Наведемо її в розділі private:







procedure SetCaption (Val: String);

і звичайно ж створимо сам код:


Процедура paint це і є отрисовка кнопки, яку ми зараз і займемося. Її ми опишемо в розділі protected - procedure Paint; override ;.
Відразу ж напишемо код:


Зверніть увагу на умову. Ми передбачаємо різні варіанти оформлення при виділеної і невиділеної кнопці. Як працювати з графікою Ви, я думаю, знаєте, тому зможете дуже легко налаштувати зовнішній вигляд по-своєму.

А тепер найцікавіше: як зробити так, щоб кнопка змінювала зовнішній вигляд при наведенні?

Наведемо дві процедури в розділі private:

procedure MEnter (var Mes: TMessage); message CM_MOUSEENTER;
procedure MLeave (var Mes: TMessage); message CM_MOUSELEAVE;

Процедури реагують на повідомлення введення і виведення миші в область кнопки. Перша - на повідомлення введення, а друга - на повідомлення виведення. А ось власне і код, який вони викликають.


Як бачите, ми просто вказуємо, виділена або не виділена кнопка і перемальовували її.

Прекрасно, ми виконали завдання, але як впровадити кнопку в додаток? Дуже просто! Вам необхідно описати створений нами модуль в потрібному вам місці, а щоб створити кнопку опишіть її як змінну (var B. TMyButton;), створіть (B: = TMyButton.Create (self);) і відкоригуйте поля (B.Caption: = ' Button ';).
В цілому:


Тепер Ви вмієте створювати свої елементи управління і можете попрацювати над дизайном своєї програми. Успіхів!

Вихідний код модуля:







Схожі статті