пятница, 3 июня 2011 г.

Урок 11. Создание компонента гиперссылки


Для полного счастья :-), чтобы закончить предварительный разговор о создании собственных компонентов, начатый в уроках 9 и 10, мне не хватает только одного - рассказать о том, как создать компонент гиперссылку. Вообще-то, темами последних уроков я постепенно подводил моего читателя к теме создания формы “О программе”, разговор о которой уже близок, а затем и компонента на ее основе.
Поскольку, на предыдущих уроках, я подробно рассказал и показал, как создаются модули компонентов, как создаются пакеты, компилируются и инсталлируются, то мне ничего не остается сделать, как привести в этом уроке исходный текст модуля компонента гиперссылки, который Вы можете выделить и скопировать в файл, открытый в среде разработки Delphi.
Вот он, выделен цветом для удобства:
unit PrDLinkLabel;                 // дайте файлу имя PrDLinkLabel.pas
interface                                // Область объявлений
uses
SysUtils
, Classes
, Controls
, StdCtrls
, Windows
, Messages
, Variants
, Graphics
, Forms
, Dialogs
, SHELLAPI
;
type
TPrDLinkLabel = class(TLabel)         // Объявление нового класса, предком которого
// выбран компонент TLabel
private
procedure PrDLinkLabelClick(Sender: TObject); // Тем и хороши объекты, 
// что инкапсулируют в себе данные и методы
protected                                       // В этой области ничего не объявлено
public
Constructor Create( AOwner: TComponent); override; // Конструктор компонента, 
// как  и в предыдущих случаях, устанавливается 
// общий предок - предок визуальных компонентов
// TComponent.
published                                      // В этой области ничего не объявлено
end;                                                // Окончание объявления класса
procedure Register;                       // Объявление процедуры Register, которая 
// установит компонент в среду разработки Delphi
implementation                              // Область, где расположены
// тексты процедур и функций
constructor TPrDLinkLabel.Create( AOwner: TComponent );
begin
inherited Create(AOwner);         // Оператор, создающий компонент на основе предка
AutoSize:=False;                       // Перекрытие свойства AutoSize
Cursor:=crHandPoint;               // Назначение вида курсора
Font.Color:=clNavy;                  // Изменения цвета надписи
Font.Style:=[fsBold];                  // Перекрытие стиля надписи (шрифт станет жирным)
onClick:=PrDLinkLabelClick;     // Назначение метода PrDLinkLabelClick; событию onClick
Hint:='http://pro-delphi.ru/';         // Всплывающая подсказка
Caption:='http://pro-delphi.ru/';   // Текст надписи в метке
// Последние два свойства будут иметь эти значения по
// умолчанию, однако, Вы можете их не задавать
// или указать свои значения
end;
procedure TPrDLinkLabel.PrDLinkLabelClick(Sender: TObject);
// Процедура, обрабатывающая клик по надписи
begin
If (Sender is TLabel) then
with (Sender as Tlabel) do
ShellExecute(Application.Handle,PChar('open'),  PChar(Hint), PChar(0),nil,SW_NORMAL); //  -
// функция, вызывающая открытие приложения (браузера)
end;
procedure Register;
begin
RegisterComponents('Pro-Delphi Lib', [TPrDLinkLabel]);  // Процедура, 
// регистрирующая компонент компонент TPrDLinkLabel 
// на вкладке Pro-Delphi Lib в среде разработки Delphi
end;
end.
Следующим шагом Вы должны создать пакет, добавить в него файл данного компонента, и установить его.
* * *
Наглядный видео урок Вы можете посмотреть или скачать.

Что же дальше?
В следующих уроках разговор пойдет о:
  • создании формы “О программе”,
  • создании компонента на основе формы “О программе”,
  • мы вернемся к проекту “Таймер” и напишем обработчики тех пунктов меню, которые еще остались пустыми (речь пойдет о задании и сохранении настроек программы),
  • научимся сжимать готовый exe файл,
  • создадим новый проект “Учет расходов”, в котором будем знакомиться с базами данных и всем, что с ними связано,
но, похоже, я сильно забежал вперед... :-)

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.