- •Технология разработки программного
- •Лабораторная работа №1 (2 часа) Организация проекта приложения
- •Задание
- •Программа работы
- •Пояснения к работе
- •Указания к выполнению работы
- •Контрольные вопросы и задания
- •Лабораторная работа №2 (2 часа) Работа с компонентами
- •Задание
- •Программа работы
- •Пояснения к работе
- •Указания к выполнению работы
- •Контрольные вопросы и задания
- •Указания к выполнению работы
- •Контрольные вопросы и задания
- •Указания к выполнению работы
- •Контрольные вопросы и задания
- •Лабораторная работа №5 (2 часа) Программирование графики
- •Задание
- •Программа работы
- •Пояснения к работе
- •Указания к выполнению работы
- •Контрольные вопросы и задания
- •Указания к выполнению работы
- •Контрольные вопросы и задания
- •Контрольные вопросы и задания
- •Указания к выполнению работы
- •Контрольные вопросы и задания
- •Лабораторная работа №9 (2 часа) Обработка исключительных ситуаций
- •Задание
- •Программа работы
- •Пояснения к работе
- •Указания к выполнению работы
- •Контрольные вопросы и задания
- •Указания к выполнению работы
- •Контрольные вопросы и задания
- •Пояснения к работе
- •Указания к выполнению работы
- •Контрольные вопросы и задания
- •Лабораторная работа №12 (2 часа) Технология тестирования логики программ
- •Задание
- •Программа работы
- •Пояснения к работе
- •Указания к выполнению работы
- •Контрольные вопросы и задания
- •Технология разработки программного обеспечения в среде Delphi
- •346428, Новочеркасск, ул. Просвещения, 132
Указания к выполнению работы
Шаг 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;
Откомпилируйте проект. Проверьте правильность работы компонента и продемонстрируйте работу преподавателю.