Основные методы написания элементов управления в Delphi
Как программист Delphi, если вы хотите еще больше повысить свой уровень программирования, вы должны научиться писать элементы управления. В этой статье на простом примере будут представлены некоторые основные методы и шаблоны написания элементов управления для начинающих.
Этот пример элемента управления называется TLeiLabel, и он добавляет две практические функции на основе TLabel: одна — придать тексту трехмерную форму, а другая — придать тексту атрибут гиперссылки. Давайте реализуем эти функции шаг за шагом.
1. Придайте тексту объемную форму
Сначала определите тип T3DEffect и атрибут Style3D следующим образом:
T3DEffect=(Нормальный, Повышенный, Пониженный, Затененный);
PROperty Style3D:T3DEffect чтение FStyle3D запись SetStyle3D по умолчанию Нормальный;
Затем определите переменную в частном порядке: «FStyle3D:T3DEffect;» и установите метод SetStyle3D() следующим образом. Это также общий формат для написания методов:
процедура TLeiLabel.SetStyle3D(значение: T3DEffect);
начинать
если значение FStyle3D <>, то
начинать
FStyle3D := значение;
инвалидировать; //Указывает, что элемент управления будет перерисован
конец;
конец;
Кроме того, для текста с тенями необходимо определить смещения тени ShadeXOffSet и ShadeYOffSet:
свойство ShadowXOffSet: чтение целого числа FXOffSet запись SetFXOffSet по умолчанию 5;
свойство ShadowYOffSet: целое число чтение FYOffSet запись SetFYOffSet по умолчанию -5;
Методы записи SetFXOffSet() и SetFYOffSet() аналогичны описанному выше SetStyle3D().
Чтобы перерисовать элемент управления, обычно нужно перегрузить метод Paint. Здесь мы просто перерисовываем текст. Нам нужно только перегрузить метод DoDrawText.
Объявление DoDrawText помещается в Защищено:
процедура DoDrawText (var Rect: TRect; Флаги: Longint);
Здесь DoDrawText() рисует различный текст четырех типов (обычный, выпуклый, утопленный и теневой).
2. Добавьте в текст атрибуты гиперссылки.
Определите URL-адрес атрибута, который будет представлять URL-адрес или адрес электронной почты, на который будет осуществляться ссылка.
URL-адрес свойства: чтение строки FURL, запись SetURL;
Напишите метод SetURL следующим образом:
процедура TLeiLabel.SetURL(Значение: Строка);
Начинать
если FURL <> Значение, то FURL := Значение ;
если FURL <> ', то
Курсор := crHandPoint;
конец;
При нажатии на эту метку вам необходимо открыть браузер или инструмент отправки и получения почты, что требует перегрузки метода Click.
Процедура Нажмите кнопку «Переопределить»;
процедура TLeiLabel.Click;
вар с: строка;
Начинать
Унаследованный клик;
если FURL = ', то выходим;
если LowerCase(Copy(FURL,1,7)) = 'http://', то
s := FURL
иначе если Pos('@',FURL) <> 0 Тогда
s := 'mailto:' + FURL
еще
s := 'http://' + FURL;
ShellExecute(application.Handle, 'open', PChar(s), NIL, NIL, SW_SHOWNORMAL);
конец;
Для общих гиперссылок цвет текста меняется при наведении на него мыши. Для этого добавьте атрибут HoverColor, который указывает цвет текста при наведении мыши.
Свойство HoverColor: TColor Чтение FHoverColor Запись SetHoverColor по умолчанию clRed;
Также определите две процедуры, которые получают сообщения Windows CM_MOUSEENTER и CM_MOUSELEAVE (наведение и отключение мыши):
Процедура CMMouseEnter (вар Сообщение: сообщение TMessage CM_MOUSEENTER);
Процедура CMMouseLeave (сообщение var: сообщение TMessage CM_MOUSELEAVE);
Процедура TLeiLabel.CMMouseEnter (Var Message: TMessage);
начинать
Если включен и видим и getParentForm(Self).Active, тогда
начинать
FFontColor := Font.Color;
//Сохраняем цвет текста
Font.Color := FHoverColor;
//Изменяем цвет текста
Конец;
конец;
Процедура TLeiLabel.CMMouseLeave (Var Message: TMessage);
начинать
Font.Color:=FFontColor;
//Восстанавливаем исходный цвет текста
конец;
Чтобы установить значение атрибута по умолчанию, нам также необходимо перегрузить конструктор Create(). Обратите внимание, что при перегрузке конструктора сначала необходимо вызвать конструктор класса-предка. Программа перегрузки конструкции Create() выглядит следующим образом:
конструктор TLeiLabel.Create(AOwner: TComponent);
начинать
унаследовано Create(AOwner);
//Сначала необходимо вызвать конструктор класса-предка
FStyle3D := Нормальный;
FXOffSet := 5;
ФYOffSet := -5;
FHoverColor := clRed;
конец;
Наконец, к этому элементу управления необходимо добавить значок. Мы можем использовать редактор изображений в Delphi, чтобы создать растровое изображение размером 24×24 и сохранить его как файл DCR. Имя файла должно совпадать с именем файла Pas элемента управления. Имя растрового изображения должно совпадать с именем элемента управления. имя и все заглавные буквы.