|
Навигация
|
Главная » Delphi Добавление методов и событий в компонентИсточник: codingrus Kest Созданный в примере 1 компонент PrinterList отличается от своего прототипа только переопределением одного из методов родительского компонента. Такой способ изменения поведения стандартного компонента и реализации дополнительных функций нового компонента является очевидным и достаточно простым. Другой способ состоит в том, что поведение стандартного компонента улучшается путем добавления к нему собственных методов и (или) переопределения обработчиков стандартных событий.Рассмотрим первый способ на следующем примере. Пример 2. Создать компонент, который будет конвертировать текущее содержимое поля ввода в заглавные буквы, и подсчитывать количество вхождений задаваемого символа в содержимом поля ввода. Из условия примера следует, что для нового компонента в качестве родительского наиболее подходящим является стандартный компонент Edit класса TEdit. Пусть новый компонент называется NewEdit. Для реализации возлагаемых на него функций в модуль компонента добавим два метода: • процедуру ToUpper, которая будет преобразовывать текущее содержимое поля ввода в заглавные буквы; • функцию с именем GetThisCharCount, которая будет возвращать количество вхождений задаваемого символа в содержимом поля ввода. Выполнив действия пункта 3 в примере 1, создайте заготовку модуля нового компонента и добавьте в ее интерфейсную часть описания новых методов ToUpper и GetThisCharCount: unit NewEdit; procedure TNewEdit.ToUpper; Выполните тестирование нового компонента, для чего создайте новое приложение, поместите на форму компонент NewEdit, компонент Edit для ввода задаваемого символа и три кнопки. Поля ввода с помощью компонентов Label снабдите заголовками, например: "Исходная строка", "Заданный символ". Кнопкам также можно дать названия, например: "Перевод в заглавные", "Кол-во вхождений", "Выход". Для первых двух кнопок подготовьте обработчики события OnClick так, чтобы каждая из них вызывала один из добавленных методов: procedure TForm1.Button1Click(Sender: TObject); Выполнив действия пункта 6 (пример 1), подготовьте и зарегистрируйте в среде Delphi значок для компонента NewEdit. При создании пользовательского компонента чаще всего от него требуется такая же реакция на события, как и от того компонента, на основе которого он разработан. Если родительским классом компонента выбран класс, реализующий, например, один из стандартных компонентов (класс Edit в примере 2), то специально заботиться о событиях не нужно: все события, доступные компоненту Edit, будут доступны и компоненту NewEdit. Задача усложняется в следующих случаях: 1. Если класс, реализующий новый компонент, является наследником некоторого абстрактного класса (например, можно было бы произвести класс TNewEdit от класса TCustomEdit - предка TEdit). 2. Если требуется, чтобы новый компонент реагировал на некоторое событие не так, как его предок и эта реакция реализовывалась бы самим компонентом, а не средствами приложения, в котором он будет использоваться. В первом случае в распоряжении нового класса по умолчанию никаких событий не будет. Если требуется, чтобы новый компонент получил доступ к событиям, например, OnClick и OnKeyDown, то необходимо объявить их как свойства в разделе published: type Во втором случае необходимо просто переопределить в модуле компонента метод-обработчик требуемого события. Рассмотрим данный случай на следующем примере. Пример 3. Создать компонент, который будет представляться кнопкой, подсчитывающей количество нажатий на себя и отображающей его в своей надписи. В остальном новая кнопка должна реагировать на нажатие так же, как обычная. Поскольку новый компонент должен представляться кнопкой, то целесообразно в качестве базового класса выбрать класс TButton. В создаваемом компонентебудут использоваться его конструктор и обработчик события OnClick. Новому компоненту присвоим имя New1Button. Выполните все действия по созданию заготовки модуля нового компонента и добавьте описание нового класса TNew1Button следующими строками: • в разделе private введите поле FCount:Integer для хранения количества нажатий на кнопку; • в разделе public укажите заголовки переопределяемых методов - конструктора базового класса Create и обработчика события OnClick: constructor Create (AOwner : TComponent);override; constructor TNew1Button.Create(AOwner : TComponent); Выполните тестирование нового компонента, для чего создайте новое приложение, поместите на форму компонент New1Button и другие стандартные компоненты (кнопки, метки и т. д.) для обеспечения приемлемого интерфейса приложения. Проверьте, что новая кнопка действительно считает нажатия на себя. Выполнив действия пункта 6 (пример 1), подготовьте и зарегистрируйте в среде Delphi значок для компонента New1Button. Модифицируйте тестовое приложение, создав в нем собственный обработчик события OnClick для кнопки New1Button (например, в обработчике можно вывести какое-либо сообщение процедурой ShowMessage или иным способом). Проверьте работу приложения и сделайте соответствующие выводы. Создание почтового клиента в Delphi 7 (исходники). Сообщения Windows и их обработка (исходники). Ресурсы. Зачем они нужны (исходники). Создание Web-приложений в среде Delphi (исходники). Разработка клиент-серверного приложения на Delphi. Главная » Delphi |
© 2024 Team.Furia.Ru.
Частичное копирование материалов разрешено. |