Създай свой собствен бутон в Делфи

Ние се залавяме за работа. Да кажем, че проектът, за който ние създаваме един бутон, вече е отворен. Първо, създаване на нов модул (File \ Нова \ Unit). Нека просто се запази единица (като натиснете Ctrl + Shift + S) под MyButtonUnit за името. В модула виждаме две секции: интерфейс и изпълнение. В първия раздел, ние ще опишем сменяеми модули, типове данни, процедури, константи и променливи, а вторият ще бъде в самия код.

След интерфейса ще опише модули, които се нуждаем. Тя изглежда така:

интерфейс
използва класове, органи за управление на Windows, графики, съобщения;

След това, ние трябва да се опише ни създаде нов клас (TMyButton), който се ще се полага на базата TCustomControl клас.

Типове TMyButton = клас (TCustomControl)
частен
защитени
обществен
приключи;

Виждате ли три секции на нашия клас: частни, защитени, както и публично. Първото изпълнение на променливите и процедурите, които ще бъдат на разположение за употреба само в рамките на класа. Защитената раздел описва методите, прилагани в класа родител. И накрая, третата част се описват функциите и процедурите, които ще бъдат на разположение извън класа.

Започнете с обществеността.
Ние описваме строителя: конструктор Създаване (AOwner: TComponent);
Ние се процедира в раздела за изпълнение и пишат код, който ще се проведе, когато създавате един бутон.

конструктор TMyButton.Create (AOwner: TComponent);
започвам
наследил Създаване (AOwner);
Майка: = AOwner като TWinControl;
Широчина: = 100;
Височина: = 25;
приключи;

Донесох задължителна част от кода. Можете да добавите към него, ако е необходимо.

Сега е време да мисля за това как да работят бутона. Основният ни е да се промени образа, когато мишката върху него. Тя трябва да съдържа надписа. Това е минимума! След като бутонът ще се промени външния вид, когато мишката върху него, неофициалния раздел ще опишем променливата FSelected. булева; състоянието на съхранение на бутона. Нека се бутона по-късно. В същата рубрика ще опише променлива FCaption. String;, който поддържа етикета на бутона. За да се регистрирате може да се промени, опишете Надпис на имота: String прочетете FCaption запис SetCaption; раздел публично. Както можете да видите, процедура SetCaption още не сме създали. Ние го опиша в частни раздела:

процедура SetCaption (Val: String);

и, разбира се, ще се създаде в самия код:

процедура TMyButton.SetCaption (Val: низ);
започвам
FCaption: = Val;
боя;
приключи;

Процедура за боя е изготвянето на бутон, който ние сега да се върна. Нейният описваме в защитената част - процедура Paint; замени.
Веднага се напише код:

процедура TMyButton.Paint;
започвам
Ако не FSelected
след това
започвам
Canvas.Pen.Color: = $ FFFFFF;
Canvas.Brush.Color: = $ FFFFFF;
край
още
започвам
Canvas.Pen.Color: = $ EEEEEE;
Canvas.Brush.Color: = $ EEEEEE;
приключи;

Canvas.Rectangle (0,0, ширина, височина);
Canvas.TextOut ((Ширина - Canvas.TextWidth (FCaption)) DIV 2, (височина - Canvas.TextHeight (FCaption)) DIV 2, FCaption);
приключи;

Обърнете внимание на състоянието. Ние предлагаме разнообразие от възможности за дизайн, когато разпределени и неразпределени бутон. Как да работим с вас, мисля, че, нали знаете графика, така че може много лесно да настроите външния вид на своите собствени.

И сега най-забавната част: как да се направи бутони променят външния вид, когато се движите?

Ние описват две процедури по лично:

Процедура MEnter (VAR Mes: TMessage); CM_MOUSEENTER съобщение;
процедура MLeave (VAR Mes: TMessage); CM_MOUSELEAVE съобщение;

Процедури за отговор на входните и изходните мишка съобщенията в областта на бутон. Първият - да въведете съобщение, а вторият - на изхода съобщението. И тук е код, който те причиняват.

процедура TMyButton.MEnter (VAR Mes: TMessage);
започвам
FSelected: = True;
Paint;
приключи;

процедура TMyButton.MLeave (VAR Mes: TMessage);
започвам
FSelected: = False;
Paint;
приключи;

Както можете да видите, ние просто отбележа, подчерта подчерта бутон или не и да го прехвърлите.

Добре, ние изпълнение на задачата, но как да се приложи един бутон в приложението? Много просто! Трябва да се опише модула сме създали в желаното място, и кликнете, за да създадете и да го опише като променлива (VAR Б. TMyButton), създаване на (B: = TMyButton.Create (самостоятелно);) и регулиране на полето (B.Caption: = ' Бутон ").
Като цяло:

процедура TForm3.FormCreate (Sender: TObject);
Var
Б. TMyButton;
започвам
B: = TMyButton.Create (самостоятелно);
B.Caption: = "Бутон";
приключи;

Вече знаете как да създадат свои собствени проверки и може да работи по проектирането на програмата. На добър час!

Изходният код на модула:

интерфейс
използва класове, органи за управление на Windows, графики, съобщения;

Типове TMyButton = клас (TCustomControl)
частен
FSelected: Булева;
FCaption: String;
процедура SetCaption (Val: String);
Процедура MEnter (VAR Mes: TMessage); CM_MOUSEENTER съобщение;
процедура MLeave (VAR Mes: TMessage); CM_MOUSELEAVE съобщение;
защитени
Процедура за боядисване; отменят;
обществен
конструктор Създаване (AOwner: TComponent);
имот с надписи: String прочетете FCaption запис SetCaption;
приключи;

конструктор TMyButton.Create (AOwner: TComponent);
започвам
наследил Създаване (AOwner);
Майка: = AOwner като TWinControl;
Широчина: = 100;
Височина: = 25;
приключи;

процедура TMyButton.SetCaption (Val: низ);
започвам
FCaption: = Val;
боя;
приключи;

процедура TMyButton.Paint;
започвам
Ако не FSelected
след това
започвам
Canvas.Pen.Color: = $ FFFFFF;
Canvas.Brush.Color: = $ FFFFFF;
край
още
започвам
Canvas.Pen.Color: = $ EEEEEE;
Canvas.Brush.Color: = $ EEEEEE;
приключи;

Canvas.Rectangle (0,0, ширина, височина);
Canvas.Font.Color: = 0;
Canvas.TextOut ((Ширина - Canvas.TextWidth (FCaption)) DIV 2, (височина - Canvas.TextHeight (FCaption)) DIV 2, FCaption);
приключи;

процедура TMyButton.MEnter (VAR Mes: TMessage);
започвам
FSelected: = True;
Paint;
приключи;

процедура TMyButton.MLeave (VAR Mes: TMessage);
започвам
FSelected: = False;
Paint;
приключи;

Сродни връзки