Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;






Type //раздел типов

//Можно формировать потомка на основе класса, например, TLabel, ис­поль­//зуя свойства родителя и добавляя новые свойства и события.

//MyLabel = class(TLabel) //формирование потомка из класса TLabel

//Если имя родительского класса начинается с текста TCustom, то потомок //существенно отличается от родителя и не все свойства и события //переносятся потомку, например:

//MyLabel = class(TCustomLabel) //формирование потомка из TCustomLabel

//Если имя родительского класса TComponent, то компонент практически //наследует самые общие свойства компонентов.

TDivide = class(TComponent) //формирование нового класса TDivide

Private //поля, методы, свойства и события, доступные только в классе

{ Private declarations } //объявление переменных и методов

Fzero: TNotifyEvent; //переменная типа события (имена начинаются с F)

FVal1: Double; //переменная для хранения значения свойства Val1

FVal2: Double; //переменная для хранения значения свойства Val2

FRes: Double; //переменная для хранения значения свойства Res

procedure SetVal1(InVal: Double); //метод установки делимого (Val1)

procedure SetVal2(InVal: Double); //метод установки делителя (Val2)

protected //аналогичен Private и дополнительно доступен потомкам

{ Protected declarations }

public //поля, методы, свойства и события, доступные всем вне класса

{ Public declarations }

//Конструктор создает представителя класса при размещении или при //выполнении. Он имеет один параметр - компонент‑ владелец. Слово //Override означает, что заменяется наследуемый конструктор TComponent.

constructor Create (AOwner: TComponent); override; //основной конструктор

procedure DoDivide; //объявление процедуры выполнения деления

Property Res: Double read FRes; //значение свойства Res в переменной FRes

Published //аналогичен Public и изменяемый в Инспекторе Объектов

{ Published declarations }

//Объявления свойств. Значения свойств (read) читаются из переменных //Fval1, Fval2, а устанавливаются (write) процедурами SetVal1, SetVal2.

Property Val1: Double read FVal1 write SetVal1; //свойство Val1

Property Val2: Double read FVal2 write SetVal2; //свойство Val2

//Объявления свойства-события OnZero. Значения свойств (read) читаются //и устанавливаются переменной‑ событием FZero.

Property OnZero: TNotifyEvent read FZero write FZero; //событие OnZero

End;

procedure Register; //объявление процедуры регистрации компонента

implementation //исполнимая часть

procedure Register; //заголовок процедуры регистрации компонента

begin //процедура регистрации компонента TDivide на панели Samples

RegisterComponents('Samples', [TDivide]);

end; //конец процедуры регистрации

constructor TDivide.Create(AOwner: Tcomponent); //заголовок конструктора

begin inherited Create(AOwner); //вызов конcтруктора родительского класса

FVal1: =1; //установка значения FVal (свойства Val1) по умолчанию =1

FVal2: =1; //установка значения Fva2 (свойства Val2) по умолчанию =1

end; //конец конструктора

procedure TDivide.SetVal1(InVal: Double); //метод установки значения Val1

begin FVal1: =InVal; DoDivide; end; //переменной Fval1 (свойства Val1)

procedure TDivide.SetVal2(InVal: Double); //метод установки значения Val2

begin FVal2: =InVal; DoDivide; end; //переменной Fval2 (свойства Val2)

procedure TDivide.DoDivide; //метод деления двух чисел

begin

if Val2< > 0 then FRes: =FVal1/FVal2//формирование значения свойства Res

//Функция Assigned возвращает истину, если имеется процедура обработки //события и процедура OnZero данного компонента (Self) выполняется

else if assigned(FZero) then OnZero(Self); //выполнение обработчика OnZero

end; //конец метода деления

end. //конец компонента

Для отладки компонента создадим новый проект и включим в него модуль компонента Divide командой Project/Add to Project/Divide. Допол­ним команду Uses модуля Unit1 именем Divide (подключим этот модуль). В разделе переменных (Var) модуля Unit1 объявим переменную D типа TDivide (D: TDivide;) и составим обработчик события OnCreate для формы:

procedure TForm1.FormCreate(Sender: TObject); //заголовок

begin D: =TDivide.Create(Self); //создание экземпляра компонента TDivide

D.Val1: =3; D.Val2: =4; //задание свойств для созданного компонента

//для проверки обработчика события OnZero нужно задать D.Val2=0

D.DoDivide; //выполнение деления методом DoDivide

Form1.Caption: =FloatToStr(D.Res); //вывод результата (свойство Res)

end;

Установим компонент на палитру после отладки командой Component/Install Component/Into new package. В появившемся окне заполним его поля (рис. 4.2.2). Далее ком­по­­не­нт мож­но разме­щать как обычно. Для уда­ле­ния компонен­та вы­­­пол­­ня­ет­­ся команда Com­po­nents/Install Pac­kages. В спис­ке компо­нентов по­ме­­ча­ет­ся уда­ля­емый; на­жи­­маем кноп­ку Remove.

Рис. 4.2.2. Окно установки компонента

4.3. Создание и установка ActiveX‑ элементов

Можно визуально создать компонент (OCX‑ файл) на основе уже имеющегося командой File/New/ActiveX/ActiveX Control. В поле VCL Class Name вы­бе­рите базовый класс (например, TButton) и нажмите кнопку OK. Получим исходный текст потомка TButtonX наследника TButton. После компиляции проекта (^F9) появится компонент ActiveX под именем ButtonXControl1.OCX, который можно использовать в других проектах.

Активная форма является одним из видов ActiveX‑ элементов и создается командой File/New/ActiveX/ActiveForm. Далее можно размещать на этой форме нужные компоненты, и после трансляции (^F9) формирует­ся OCX‑ файл (со всеми компонентами и процедурами), который можно использовать в проектах после размещения на форме проекта.

Для размещения нового компонента ActiveX (в том числе и активной формы) на панели компонентов (например, ActiveX) выполните команду Component/Import ActiveX Control/Add и выберите имя нужного OCX‑ файла (например, ButtonXControl1.OCX или ActiveFormProj1.OCX) и нажмите кнопку Install.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.