Главная » Delphi » Сценарии разработки пакетов

0

Выше уже отмечалось, что тип разрабатываемого пакета  основан на том или ином сценарии его применения. В настоящем разделе предлагается три  возможных сцена рия использования пакетов времени разработки и/или времени выполнения.

Сценарий 1. Пакеты разработки и времени выполнения для компонентов

Сценарий для пакетов разработки и времени выполнения, содержащих компонен

ты, потребуется разработчикам компонентов в двух случаях.

•    Необходимо предоставить программистам Delphi право выбора: компоновать при

ложение вместе с этими компонентами или распространять их отдельно от него.•   Нежелательно заставлять пользователей компилировать в  код  приложения элементы времени разработки (редакторы свойств, компонентов и т.п.).

Исходя из  этого  сценария, следует  создать  пакет  одновременно и разработки, и времени выполнения. На рис. 14.1 изображена схема организации такого  пакета.  Как видите, пакет  разработки ddgDT60.dpk включает в себя  и элементы времени разра ботки  (редакторы свойств, компонентов и т.п.),  и пакет  времени выполнения ddgRT60.dpk. Этот вложенный пакет (ddgRT60.dpk) содержит только  выполняемый код  новых  компонентов. Чтобы достичь подобного устройства пакета, необходимо включить имя  пакета   времени выполнения в  раздел  requires пакета   разработки (рис. 14.1).

Рис.  14.1. Пакет разработки  содержит элементы разработки и пакеты времени выполнения

Перед компиляцией каждого  пакета  необходимо установить соответствующие параметры. Это можно  делать  в диалоговом окне  Package Options, которое можно открыть, выбрав  в контекстном меню редактора пакетов пункт Options. Для пакета времени  выполнения  DdgRT60.dpk переключатель  Usage  Options  (Параметры применения) должен  быть установлен в положение Runtime Only (Только во время выполнения). Это  гарантирует, что  компонент времени выполнения не  будет ус тановлен в интегрированную среду как пакет разработки (более подробная ин формация по данной теме  приведена далее  в настоящей главе).  Для пакета  разра ботки   DdgDT60.dpk этот  переключатель  должен   быть  установлен  в  положение Design Time Only (Только во время  разработки). Это  обеспечит установку  пакета  в среде разработки Delphi и предохранит его от использования в качестве пакета времени выполнения.

Вставка  пакета  времени выполнения в пакет  разработки еще не делает  содержа щиеся  в нем  компоненты доступными в IDE Delphi. Компоненты нужно  зарегист рировать. Как  уже  отмечалось, при  создании  компонента  Delphi   автоматически вносит в его модуль процедуру  Register(), которая, в свою очередь, вызывает процедуру  RegisterComponents(). Это и есть процедура, регистрирующая любой компонент в среде  IDE Delphi при его установке. При  работе с пакетами рекоменду ем выделить процедуру  Register() из компонентов в отдельный модуль регистра ции.  Данный модуль будет регистрировать все компоненты пакета, вызывая проце дуры RegisterComponents(). Это  не  только  упрощает управление регистрациейкомпонентов, но и позволяет избежать нелегальной установки и использования разработанного  пакета, так  как  незарегистрированные  компоненты будут недос тупны в IDE.

В частности, все  использованные в данной книге  компоненты помещены в пакет времени выполнения DdgRT60.dpk. Редакторы свойств, редакторы компонентов и ре гистрационный модуль (DdgReg.pas) этих компонентов находятся в пакете  разработки DdgDT60.dpk. В разделе requires данного пакета  указан и пакет  DdgRT60.dpk. В лис тинге 14.1 показано, как может выглядеть регистрационный модуль.

Листинг 14.1. Модуль регистрации компонентов данной книги

unit DDGReg;

interface

procedure Register;

implementation uses

Classes, ExptIntf, DsgnIntf, TrayIcon, AppBars, ABExpt,

Worthless, RunBtn, PwDlg, Planets, LbTab, HalfMin, DDGClock,

ExMemo, MemView, Marquee, PlanetPE, RunBtnPE, CompEdit, DefProp,

Wavez, WavezEd, LnchPad, LPadPE, Cards, ButtonEdit, Planet,

DrwPnel;

procedure Register;

begin

// Регистрация компонентов. RegisterComponents(‘DDG’, [ TddgTrayNotifyIcon,

TddgDigitalClock, TddgHalfMinute, TddgButtonEdit, TddgExtendedMemo, TddgTabListbox, TddgRunButton, TddgLaunchPad, TddgMemView, TddgMarquee, TddgWaveFile, TddgCard, TddgPasswordDialog, TddgPlanet, TddgPlanets, TddgWorthLess, TddgDrawPanel, TComponentEditorSample, TDefinePropTest]);

// Регистрация редакторов свойств. RegisterPropertyEditor(TypeInfo(TRunButtons), TddgLaunchPad, ”,

TRunButtonsProperty); RegisterPropertyEditor(TypeInfo(TWaveFileString), TddgWaveFile,

‘WaveName’, TWaveFileStringProperty); RegisterComponentEditor(TddgWaveFile, TWaveEditor); RegisterComponentEditor(TComponentEditorSample, TSampleEditor); RegisterPropertyEditor(TypeInfo(TPlanetName),TddgPlanet,

‘PlanetName’, TPlanetNameProperty); RegisterPropertyEditor(TypeInfo(TCommandLine), TddgRunButton,

”, TCommandLineProperty);

// Регистрация пользовательских модулей и экспертов библиотек.RegisterCustomModule(TAppBar, TCustomModule); RegisterLibraryExpert(TAppBarExpert.Create);

end;

end.

Защита компонентов

Для регистрации компонентов достаточно обладать всего лишь пакетом времени вы- полнения. Для него создается собственный модуль регистрации, в котором регистри- руются компоненты данного пакета. Затем этот модуль добавляется в отдельный па- кет, содержащий пакет времени выполнения в разделе requires. После этого доста- точно установить новый пакет в среду Delphi, и все компоненты появятся в палитре компонентов. Тем не менее скомпилировать приложение, использующее такие компо- ненты, будет невозможно до тех пор, пока не будут установлены соответствующие файлы .dcu модулей данных компонентов.

Распространение пакетов

При  передаче разработчикам компонентов пакетов без  их  исходного кода  в ком плект  поставки  следует  включать файлы  обоих   откомпилированных  пакетов DdgRT6.bpl и DdgDT6.bpl, оба файла  *.dcp, а также  все скомпилированные модули (*.dcu), необходимые для компиляции поставляемых компонентов. Программисты, распространяющие пакеты времени выполнения своих приложений, в которых они ис пользуют  компоненты из ваших  пакетов, также  должны  будут вместе  со своими  прило жениями распространять пакет DdgRT6.bpl и все другие пакеты времени выполнения, используемые этими приложениями.

Сценарий 2. Пакет компонентов только для разработки

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

Распространение пакетов

При  распространении такого  пакета  без исходного кода в комплект поставки сле дует включать скомпилированный файл  пакета  DdgDT6.bpl, файл  DdgDT6.dcp и все скомпилированные модули (файлы *.dcu), необходимые для компиляции распро страняемых компонентов. Программисты,  использующие эти  компоненты, должны будут включить их в свои  приложения. Они  не  смогут  распространять ваши  компо ненты в пакетах  времени выполнения.Сценарий 3. Расширение IDE элементами разработки без компонентов

Данный сценарий применяется, когда  среда  разработки Delphi дополняется спе циальными инструментами, такими например, как эксперты. Распространяемые экс перты регистрируются в специальном модуле регистрации. Принцип распростране ния по такому сценарию очень  прост  — поставляется только  файл *.bpl.

Сценарий 4. Дробление приложений

Этот сценарий применяется при дроблении приложения на отдельные логические части, каждая  из которых может  распространяться отдельно. Существует  несколько причин использования такого сценария.

•  Этот сценарий легче поддерживать.

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

•   Модернизировать (или  исправлять) приложение по частям  (patch) значитель но легче,  а пользователям это позволит избежать повторной установки полной версии приложения.

По такому сценарию распространяются лишь файлы *.bpl, необходимые для ра боты приложения. Такой  сценарий подобен предыдущему,  но за одним исключением: вместо  пакетов для IDE Delphi  пользователю предоставляются пакеты собственно приложения. При  таком дроблении приложения следует особое внимание уделить вопросам, связанным с версиями пакетов. Об этом пойдет  речь в следующем разделе.

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии