Пакеты

advertisement
1. Пакеты
Любой компонент, который устанавливается в Delphi, должен попасть в какой-то пакет. Для этих целей по умолчанию уже есть один пакет, но вы можете создавать новые пакеты. Таким образом, компоненты можно группировать по смысловому признаку в разные пакеты. Например, те, что
работают с графикой, устанавливать в один пакет, а те, что работают с файлами — в другой.
Рассмотрим, как работать с пакетами.
Для начала создайте где-нибудь у себя на компьютере директорию (папку)
Components. В нее вы будете складывать все созданные или скачанные из
Internet компоненты. Внутри нее создайте еще одну — Other.
Примечание
На диске в папке Компоненты \ Handles вы найдете исходный код, который
будем сейчас устанавливать. Скопируйте найденный там файл в папку Other.
Скопировать нужно файл Handles.pas. Здесь находится исходный код
компонента. Теперь запустите Delphi и закройте все, что в нем открыто (File |
Close All).
Чтобы установить компонент, выберите из меню Component пункт Install
Component. Перед вами откроется окно. В этом окне вы можете увидеть
четыре строки ввода. Рассмотрим их назначение.
- Unit file name — в этой строке нужно указать имя устанавливаемого компонента. Для этого щелкните по кнопке Browse и вы увидите стандартное
окно открытия файла. Откройте файл Handles.pas.
- Search Path — здесь находится список путей, по которым Delphi при
компиляции ищет исходный код установленных компонентов. В принципе, в
конец этой строки надо было бы добавить, после точки с запятой, и путь к
нашему компоненту. Но пока этого делать не будем.
- Package file name — это имя пакета, в который будет помещен устанавливаемый компонент. Здесь можно выбирать в выпадающем списке любой
существующий.
- Package description — текстовое описание пакета. Здесь может быть любой
текст, заданный вами. Он ни на что не влияет.
Будем считать, что у вас в системе еще нет своих пакетов, и Delphi
предложил установить новый компонент в пакет по умолчанию. Мы не
будем этого делать, потому что так у нас в системе возникнет
неопределенность. Давайте создадим новый пакет, в который будем
помещать все файлы из директории Components \ Other. Для этого в этом же
окне выберите вкладку (она находится в верхней части окна) Into new
package и нажмите кнопку Browse напротив строки Package file name. В
появившемся стандартном окне открытия файлов перейдите в директорию
Components \ Other и здесь вручную введите имя пакета — OtherComponents
— и нажмите кнопку ОК.
Теперь нажмите кнопку ОК в окне InstallComponent, чтобы закрыть окно
установки компонента. Перед вами автоматически должно появиться сообщение типа: "Package OtherComponents.bpl will be build then installed.
Continue?" Смысл сообщения следующий — "Пакет OtherComponents.bpl
будет откомпилирован и установлен в систему. Продолжить?" Можете
нажать кнопку Yes и Delphi сделает все необходимое для установки нового
компонента в систему. Однако нажмем кнопку No, чтобы рассмотреть, как
это делается не автоматически и что при этом происходит.
Для начала у вас появилось новое окно пакета.
В центре окна можно увидеть дерево из двух ветвей.
- Contains — здесь содержатся модули, входящие в пакет. У нас пока один
модуль и вы видите только его файлы.
- Requires — здесь находится список имен пакетов, необходимых для компиляции данного пакета. В принципе, эти имена можно удалить (иногда они
не нужны), но если при компиляции хотя бы один из этих пакетов
понадобится, то появится сообщение о необходимости подключения
данных пакетов, и Delphi снова их вернет автоматически. Если попытаться
отказаться от автоматического добавления, то пакет не сможет быть
откомпилированным и установленным в систему.
В верхней части окна находятся панели со следующими кнопками:
- Compile — компилировать пакет;
- Add — добавить новый модуль в этот пакет;
- Remove — удалить модуль;
- Install — установить пакет в систему (при нажатии этой кнопки пакет,
при необходимости, будет перекомпилирован);
- Options — настройки пакета.
Прежде чем компилировать наш пакет, давайте посмотрим его настройки.
Нажмите кнопку Options и вы увидите окно свойств пакета.
В принципе, большинство настроек схожи с настройками исполняемых
файлов. Обратите внимание на раздел Usage options, где надо указать, для
чего будет использоваться пакет. Здесь доступны три варианта.
- Designtime only — компоненты пакета могут использоваться только во
время проектирования формы в оболочке Delphi.
- Runtime only — компоненты нельзя использовать во время проектирования, а можно только создавать во время выполнения программы. Для этого
на машине, запускающей программу, обязательно должен присутствовать
откомпилированный файл проекта (файл с тем же именем и расширением —
bpl).
- Designtime and runtime — компоненты пакета можно использовать в обоих
случаях.
Примечание
Чаще всего используют именно третий пункт, а второй ставят для коммерческих пакетов, которые распространяются за деньги. В этом случае пользователь может познакомиться с возможностями ваших компонентов, но только
используя их во время выполнения программы и с помощью дополнительных
файлов (bpl). Если он захочет использовать компоненты и во время
проектирования формы в оболочке Delphi, то за это можно брать отдельную
плату.
Чуть позже мы рассмотрим, чем отличаются пакеты Designtime и Runtime на
практике, а пока закройте окно свойств пакета и возвращайтесь в окно
пакета.
Нажмите кнопку Install, чтобы установить пакет в систему. Если кнопка
Install недоступна, то сначала откомпилируйте проект, а потом установите.
Delphi откомпилирует пакет и выведет сообщение об удачной установке.
Закройте окно пакета. При закрытии Delphi спросит о необходимости сохранить его, ответьте Да, чтобы все изменения сохранились.
Теперь на палитре компонентов у вас должна появиться новая вкладка с
именем CyD, где вы сможете найти новый компонент. Некоторые компоненты попадают на вкладку
Symples, а для некоторых создаются новые вкладки.
Теперь снова закройте все (File | Close All) и создайте новый проект приложения. Сейчас мы рассмотрим, как используются пакеты Designtime и
Runtime. Выберите пункт Options из меню Project. Перед вами откроется
окно свойств проекта. В этом окне перейди на вкладку Packages.
Здесь (в нижней части окна) вы можете видеть флажок Build with runtime
packages. Если установить этот флажок, то ваши программы резко уменьшаются в размере, потому что в них будет храниться только код программы.
Все компоненты, которые установлены на форме, не попадут в исполняемый
файл.
Когда программа будет запускаться, она будет подгружать эти компоненты
из файлов пакетов, перечисленных в строке чуть ниже вышеописанного
флажка. Получается, что пакеты bpl могут работать как самые настоящие
динамические библиотеки. Так вы можете экономить размер программ, но
при переносе программы на другой компьютер, вы должны заботиться о том,
чтобы и необходимые BPL-файлы тоже попали на тот компьютер. Их
достаточно скопировать в папку System (System32 для Windows NT/2000/XP)
директории Windows.
Если снять флажок Build with runtime packages, то программа становится
полноценной и не нуждается в дополнительных BPL-файлах. Исключения
составляют только случаи, когда вы использовали пакет Runtime, который не
может компилироваться в программу и обязательно должен использоваться
только на этапе работы программы. Но такие пакеты редкость и использовать
их нежелательно. Работайте с теми компонентами, которые можно
установить на форму во время проектирования приложения.
Теперь проверим путь к нашему компоненту. Выберите из меню Tools пункт
Environment Options. Перед вами откроется окно настроек Delphi. В этом
окне нужно перейти на вкладку Library.
В этом окне вы можете увидеть следующие опции:
- Library path — здесь перечислены пути, где Delphi должен искать исходный код компонентов;
- BPL output directory — здесь указывается директория, куда будут сохраняться откомпилированные пакеты (по умолчанию здесь указано
$(DELPHI)\Projects\Bpl);
Примечание
Конструкция $(DELPHI) указывает на директорию, куда установлен Delphi.
Получается, что BPL-файлы будут сохраняться в директорию, где установлен
Delphi, поддиректорию Projects\Bpl.
- DCP output directory — директория, в которую будут помещаться DCPфайлы (это скомпилированные файлы пакета, которые хранят всю информацию о всех компонентах, скомпилированных в пакет);
- Browsing path — пути для просмотра.
Нас сейчас интересует только первый список, остальные вообще можно оставлять по умолчанию. Нажмите на кнопку с тремя точками справа от списка
Library path. Перед вами откроется окно редактора путей.
В списке (в центре окна) вы можете увидеть перечень директорий, в которых
Delphi будет искать исходные программные коды. Когда вы выбираете
любой из них, то этот путь перемещается в строку ввода под списком.
Проверьте список на наличие пути к директории, где находится исходник
файла
Handles.pas. Если такого пути нет, то щелкните по кнопке с тремя точками
справа от строки ввода и вы увидите окно выбора директории. Найдите
нужную директорию и нажмите ОК. Теперь выбранный путь находится в
строке ввода. Чтобы его добавить в список, нужно нажать кнопку Add.
Сделайте это и можете закрывать окно редактора путей нажатием кнопки
ОК. После этого закройте окно настроек Delphi.
Если вы не добавите путь к исходным кодам в настройках Delphi, то компилятор не найдет их и при компиляции выдаст ошибку.
Когда вы устанавливаете пакет Runtime, то вам необходимо найти файл с
расширением bpl в директории $(DELPHI)\Projects\Bpl и скопировать его в
системную папку Windows.
Если у вас уже есть где-то откомпилированный пакет (файл с расширением
bpl), то его можно сразу же установить в Delphi без компиляции. Но даже в
этом случае наличие исходных программных кодов компонентов из пакета
обязательно. Их надо будет записать в доступную для Delphi директорию или
создать новую директорию, но добавить путь в настройках Delphi.
Для установки уже скомпилированного пакета выберите из меню Component
пункт
Install Packages. Перед вами откроется окно установки пакетов, которое похоже на вкладку Packages окна свойств проекта. В принципе, можно
использовать любое из этих окон.
Для установки нового пакета нужно нажать кнопку Add. Перед вами появится стандартное окно открытия файлов. Найдите нужный bpl-файл и откройте
его. Delphi автоматически установит все компоненты из пакета в палитру
компонентов.
Download