Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
laboratornye_Delphi.doc
Скачиваний:
16
Добавлен:
17.05.2015
Размер:
2.78 Mб
Скачать

Использование форм в библиотеках

Библиотека может содержать формы, при этом форма добавляется к библиотеке и конструируется обычным для проекта способом, но обязательно надо включить в модуль формы экспортируемые функции (как минимум одну), служащие для управления формой извне библиотеки. В основной модуль экспортируется функция управления формы и ее подключение осуществляется так же, как и любой другой функции.

Пример 21.2. Создадим программу, в которую будет загружаться форма из библиотеки. Экранная форма основной программы показана на рис. 21.1, а форма, загружаемая из библиотеки — на рис. 21.2. Код библиотеки, содержащей форму:

library DLLForm;

{ библиотека с использованием формы }

uses

ShareMem,

SysUtils,

Classes,

//подключение модуля с формой

untFrmDLL in 'untFrmDLL.pas' {FrmDLL};

{$R *.res}

//экспортирование функции для внешнего управления формой

exports ShowFrmInDLL;

begin

end.

unit untFrmDLL;

interface

. . .

var

FrmDLL: TFrmDLL;

function ShowFrmInDLL(name:string):TModalResult;

implementation

{$R *.dfm}

function ShowFrmInDLL(name:string):TModalResult;

begin

FrmDll:=TFrmDll.Create(Application);

FrmDll.Caption:=name;

Result:=FrmDll.ShowModal;

FrmDll.Free;

end;

procedure TFrmDLL.FormCreate(Sender: TObject);

begin

btnOK.ModalResult:=mrOk;

btnCancel.ModalResult:=mrCancel;

end;

end.

Рис. 21.1. Экранная форма основной программы примера 21.2

Рис. 21.2. Экранная форма примера 21.2, загружаемая из библиотеки

Порядок выполнения работы

  1. На основе варианта задания из лабораторной работы 20 создать библиотеку динамической компоновки, в которую поместить форму с графиком. Динамический вызов библиотек (с функцией и формой) разместить в основном модуле.

  2. Обработать все возможные исключительные ситуации.

Контрольные вопросы

  1. Особенности создания библиотеки динамической компоновки с формой.

  2. Экспортирование функций.

  3. Загрузка библиотеки в оперативную память.

  4. Выгрузка библиотеки из оперативной памяти.

  5. Получение адреса внешней функции.

Лабораторная работа № 22Разработка компонентов пользователя

Цель работы: закрепление навыков объектно-ориентированного программирования. Изучение особенностей создания и использования компонентов IDE Delphi.

Теоретические сведения

Разработку компонента можно начать с создания проекта пакета (Package). Для этого выполним File\New\Other.. \ New \ Package (рис. 22.1). При этом откроется окно управления проектом пакета компонентов (рис. 22.2).

Теперь необходимо установить текущие каталоги, для этого нажимаем кнопку Options и на закладке Directories изменяем поля (рис. 22.3):

Output directory = .

DCP output directory = .

Точка означает текущий каталог.

Как и для любого проекта выполняем Save Project As… (проект желательно сохранить в отдельном каталоге, изменив стандартное имя проекта Package1.dpk на свое, например StdVar.dpk). Компилируем и выполняем установку пакета, нажимая кнопку Install в окне управления проектом пакета. В случае удачной установки пакета получаем сообщение, показанное на рис. 22.4.

С этого момента в каталоге проекта находятся следующие файлы: StdVar.bpl, StdVar.cfg, StdVar.dcp, StdVar.dcu, StdVar.dof, StdVar.dpk, StdVar.res.

Кроме этого файл StdVar.bpl интегрирован в состав среды разработки Delphi и поэтому для корректной работы не может быть перемещен в другой каталог (или удален) без очистки списка используемых пакетов. Таким образом, для удаления пакета нужно указать в списке Design packages необходимый пакет и нажать кнопку Remove. После этого с файлом *.bpl можно выполнять необходимые манипуляции. Для добавления существующего пакета достаточно, нажав кнопку Add…, указать его местонахождение (рис. 22.5).

Рис. 22.1. Хранилище объектов Delhi с выбранным шаблоном Package

Рис. 22.2. Окно управления проектом пакета компонентов

Рис. 22.3. Установка текущих каталогов

Рис. 22.4. Сообщение об удачной инсталляции компонента

Теперь можно приступать к созданию компонента. Для этого необходимо в окне управления проекта пакета нажать кнопку Add и в появившемся окне на закладке New Component заполнить поля:

  • Ancestor type (базовый класс компонента), например TTimer;

  • Class Name (имя класса создаваемого компонента), например TMyTimer;

  • Palette page (имя страницы в палитре компонентов), здесь лучше указать уникальное имя для создания своей странички, например Std;

  • Unit file name (местонахождение файла компонента) изменяем на текущий каталог проекта.

Нажимаем Ok и выполняем Save All (рис. 22.6).

После компиляции получаем сообщение, показанное на рис. 22.7, и на палитре компонентов появляется новая закладка с именем Std, которая содержит созданный компонент (рис. 22.8).

Рис. 22.5. Окно опций проекта, содержащего пакеты

Рис. 22.6. Окно опций проекта, содержащего пакеты

Рис. 22.7. Сообщение об успешной инсталляции компонента

Рис. 22.8. Новая закладка на палитре компонентов с пользовательским компонентом.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]