Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Технологии программирования.doc
Скачиваний:
42
Добавлен:
11.04.2015
Размер:
651.26 Кб
Скачать

Указания к выполнению работы

 

Шаг 1. Для примера лучше выбрать готовый код программы, написанной на Delphi, и далее спроектировать компонент — "обёртку", в которую его и вложить — сделать "начинку". В качестве "начинки" выберем окно диалога из Репозитория объектов с описанием класса TAboutBox.

Ваш компонент будет создавать и выполнять диалоговое окно во время исполнения программы, передавая данные, определённые при разработке.

Шаг 2. Создание компонента требуется начать с создания нового рабочего каталога (для лабораторной работы №6).

Скопируйте в этот каталог файлы ABOUT.PAS и ABOUT.DFM из директории "C:\ProgramFiles\Borland\Delphi3\Objrepos" (или "C:\Program Files\Borland\Delphi4\ Objrepos", в зависимости от версии продукта). Они потребуются для использования в качестве библиотек для "начинки" (почти любая форма, т. е. её файлы с расширением PAS и DFM, может функционировать как диалоговое окно в этом контексте).

Запустите Delphi и выполните команду "Close all" . Затем создайте новый unit (File|New закладка New, выбрать "Unit").

В появившемся окне редактора кода сотрите все строчки и внесите туда пустой шаблон для создания компонента TaboutBoxDlg с объявлением нового класса и единственной процедурой для регистрации компонента с именем "TaboutBoxDlg" на странице палитры "Samples":

 

unit AboutDlg; //Название модуля

interface

uses // Используемые библиотеки

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,

Forms;

type // Объявление нового типа компонента

TAboutBoxDlg = class(TComponent)

end;

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

implementation

procedure Register; // Описание процедуры регистрации

begin

// Samples — название страницы палитры

// TAboutBoxDlg — имя компонента

RegisterComponents('Samples', [TAboutBoxDlg]);

end;

end.

 

Сохраните шаблон компонента в рабочем каталоге в модуле с именем "AboutDlg.pas".

Для того чтобы инициализировать и отобразить "обернутое" диалоговое окно TaboutBox, вы должны добавить модуль его формы в шаблон компонента, сделав объявление в разделе uses.

Раздел используемых модулей теперь должен выглядеть следующим образом:

 

uses

  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms,  About;

 

Теперь необходимо объявить переменную класса формы для последующего использования. В нашем случае требуется объявить переменную типа TAboutBox. В шаблоне компонента перед оператором implementation должен появиться следующей код:

 

var

AboutBox: TAboutBox;

 

Выполненных действий будет достаточно для того, чтобы зарегистрировать новый класс компонента. Но как с ним работать? Какими свойствами и интерфейсными функциями он обладает? Для создания интерфейса компонента перейдём к следующему шагу.

Шаг 3. Сначала добавим интерфейсные свойства. Для этого необходимо выделить четыре поля со строковым типом – по одному под каждую характеристику программного продукта: название, версию, авторское право, любые комментарии. После необходимо объявить свойства – переменные, через которые будут доступны для редактирования значения соответствующих полей в Инспекторе объектов. При этом после оператора объявления класса объекта

 

TAboutBoxDlg = class(TComponent)

 

добавится следующий код:

 

private

// выделение четырёх полей строкового типа

FProductName, FVersion, FCopyright, FComments: string;

published

// объявление интерфейсных свойств, через которые будут

// доступны на запись и на чтение строковые поля

property ProductName: string read FproductName

write FProductName;

property Version: string read FVersion write FVersion;

property Copyright: string read FCopyright write FCopyright;

property Comments: string read FComments write FComments; 

Позднее, когда Вы проинсталлируете компонент в Палитру компонентов и разместите компонент на форме, Вы сможете редактирвать свойства — “реквизиты” программы, и их значения будут автоматически меняться у формы AboutBox.

Заключительная часть при проектировании интерфейса компонента - создание способа открытия окна диалога, который должен возвращать результат его отработки при закрытии. Для этого добавим в шаблон компонента метод с названием Execute, который будет вызывать диалог с формой AboutBox и возвращать результат через стандартную переменную Result:

type

TAboutBoxDlg = class(TComponent)

public

// объявление функции Execute, которая будет возвращать значение

// типа Boolean

function Execute: Boolean;

end;

 

function TAboutBoxDlg.Execute: Boolean;

begin

// конструктор переменной

AboutBox := TAboutBox.Create(Application);

try

        // если название продукта при проектировании не задано, то …

if ProductName = '' then

// … использовать название приложения как имя продукта

ProductName := Application.Title;

// Заголовку метки ProductName присвоить значение,

// заданное в свойстве ProductName

AboutBox.ProductName.Caption := ProductName;

// Заголовку метки Version присвоить значение,

// заданное в свойстве Version

AboutBox.Version.Caption := Version;

// Заголовку метки Copyright присвоить значение,

// заданное в свойстве Copyright

AboutBox.Copyright.Caption := Copyright;

// Заголовку метки Comments присвоить значение,

// заданное в свойстве Comments

AboutBox.Comments.Caption := Comments;

// Заголовку формы присвоить значение:

// 'About ' + ProductName

AboutBox.Caption := 'About ' + ProductName;

with AboutBox do begin

// Скопировать изображение иконки в

// поле Graphic объекта Picture,

// расположенного на форме

ProgramIcon.Picture.Graphic := Application.Icon;

// выполнить диалог и установить результат

// (Result - стандартная переменная в Delphi для

// возвращения значений функции)

Result := (ShowModal = IDOK);

end;

finally

AboutBox.Free; // высвободить память после

// отработки диалога

end;

end;

 

Далее сохраните внесённые в модуль изменения.

Выберите пункт главного меню "Component|Install component…". В появившемся диалоговом окне нажмите кнопку "OK".

На последующие запросы о перезагрузке и новой комплектации пакета с расширением BPL ответьте в обоих случаях "Yes".

После компиляции компонента закройте окно "Package…". На запрос о сохранении изменений в файле с расширением BPL ответьте "Yes".

Инсталляция окончена.

Шаг 4. Создайте новое приложение с пустой формой.

На форму поместите созданный Вами компонент TaboutBoxDlg со страницы палитры Samples. Задайте все необходимые его свойства через Инспектор объектов. Поместите на форму компонент "Кнопка" и по его событию OnClick покажите экземпляр формы компонента TaboutBoxDlg:

 

procedure TForm1.Button1Click(Sender: TObject);

begin

AboutBoxDlg1.Execute;

end;

 

Откомпилируйте проект. Проверьте правильность работы компонента и продемонстрируйте работу преподавателю.