Библиотеки ^^^^^^^^^^ В ряде проектов могут использоваться одинаковые схемы управления. Чтобы исключить излишнее копирование и вносить изменения одновременно во все проекты, где используется одинаковые схемы управления, их можно выделить в отдельные макросхемы и поместить в библиотеку. В программе присутствуют два вида библиотек: системные и библиотеки проекта. Библиотеки проекта являются частью проекта, экспортируются и импортируются в месте с ним. Системные библиотеки хранятся на локальном диске и доступны для всех проектов. Первоначально все библиотеки создаются как библиотеки проекта. Библиотеки проекта ================== Библиотеки проекта являются его частью, с ними можно производить все операции, доступные для элементов проекта: создание, удаление, копирование, экспорт и импорт. Создание библиотеки осуществляется в два этапа: * создание контейнера библиотеки; * наполнение контейнера схемами управления. Для создания библиотеки необходимо в обозреватели проекта выбрать пункт **Библиотеки проекта** и в контекстном меню по ПКМ выбрать команду :guilabel:`Добавить`. .. figure:: image/library_add1.png :align: center В окне **Добавить** выбираем требуемый тип библиотеки и указываем ее имя. .. figure:: image/library_add.png :align: center После создания библиотеки необходимо произвести первичную настройку. .. figure:: image/library_property2.png :align: center Библиотека имеет следующие свойства: * **Версия** - указывается версия библиотеки * **Дата создания** - дата создания библиотеки, не подлежит изменению * **Автор** - автор библиотеки * **Описание** - краткое описание библиотеки * **Закрытая библиотека** - флаг запрещает просмотр всех модулей в библиотеки. Свойство **Закрытая библиотека** позволяет спрятать содержимое всех элементов библиотеки в том случае, когда эта библиотека используется как системная. Если библиотека находится в разделе **Библиотеки проекта**, то блокировка игнорируется. .. figure:: image/library_property.png :align: center Все элементы библиотеки можно использовать так же как и элементы проекта. Например, при создании библиотеки FBD макросов, можно эти макросы использовать во всех шаблонах этого проекта так же, как если бы они находились в самом шаблоне. Использование библиотеки позволяет уменьшить количество копий одинаковых макросов, если они используются в разных шаблонах программы. Для того чтобы используемые объекты были общими для разных проектов, необходимо использовать системные библиотеки. Системный библиотеки ==================== Системные библиотеки, в отличие от библиотек проекта, не принадлежать проекту, а расположены на локальном диске в виде бинарных файлов. Путь к папке с библиотеками указывается в настройках программы. .. attention:: При переносе проекта с одного компьютера на другой, необходимо заботиться и о переносе системных библиотек. .. figure:: image/library_setup.png :align: center Здесь же можно производить подключение и удаление библиотек к системе. Для добавления библиотеки необходимо нажать на кнопку :guilabel:`Добавить...` и в появившемся диалоговом окне выбрать файл библиотеки. Выбранный файл будет добавлен в папку библиотек, объекты библиотеки будут доступны в обозревателе проекта в разделе **Системные библиотеки**. Для удаления нажимаем кнопку :guilabel:`Удалить`. Операция удаления является необратимой, файл библиотеки удаляется из папки безвозвратно. Системным библиотекам можно назначить панель инструментов, с помощью которой упрощается добавление элементы библиотеки в проект. Назначение панели производится в том же диалоге настроек. На рисунке, расположенном ниже показано, что можно "вытащить" макрос из системной библиотеки в навигаторе проекта или из панели инструментов. .. figure:: image/library_panel.png :align: center Системные библиотеки создаются из библиотек проекта двумя способами: экспорт в файл и экспорт в системную библиотеку. .. figure:: image/library_export1.png :align: center Использование команды :guilabel:`Библиотеки - Экспорт в файл...` в контекстном меню библиотеки. При вызове этой команды будет открыто окно с выбором имени и пути для сохранения файла библиотеки. Использование команды :guilabel:`Библиотеки - Экспорт в системную библиотеку`. При выполнении этой команды выбранная библиотека сразу будет экспортирована в файл с именем, совпадающем с именем библиотеки, и помещена в папку для системных библиотек. Файл экспортируемой библиотеки имеет расширение ***.lib**. Если библиотека помечена как закрытая, то расширение файла при экспорте будет ***.clib**. При подключении библиотек к программе необходимо учитывать, что дважды подключить одну и ту же библиотеку невозможно. Библиотека идентифицируется не своим названием, а уникальным ключом, который генерируется при первом создании библиотеки в разделе библиотек проекта. Для поддержки своих библиотек необходимо их сохранять в своем репозитории проектов, там исправлять в случае необходимости, и заново экспортировать в файл для распространения. Получить библиотеку проекта из системной невозможно. Если проект или файл пользовательской библиотеки будет утерян или удален, то исправления в системный библиотеке, которая была из нее создана будут не возможны. При создании новой библиотеки с таким же именем, она получит другой уникальный идентификатор и будет определяться программой как совершенно другая библиотека. Объекты, находящиеся в системной библиотеке можно просматривать, копировать. Однако редактирование объектов или вставка новых невозможно. В случае, если библиотека была помечена как закрытая, запрещается ее просмотр и копирование ее объектов. .. attention:: Если версия программы не поддерживает закрытые библиотеки, то при старте они будут пропускаться и будут отсутствовать в навигаторе проекта. Разницу между пользовательской и системной библиотекой необходимо учитывать при распространении своего проекта. Если библиотека пользователя расположена в самом проекте, то для того, чтобы поделиться этим проектом, достаточно его экспортировать в файл. Для того чтобы поделиться проектом, который использует системную библиотеку, необходимо передать пользователю кроме самого проекта еще и бинарный файл системной библиотеки, чтобы он мог добавить его в свою систему. В случае открытия проекта, использующего несуществующую системную библиотеку, будет выдано предупреждение: .. figure:: image/library_error.png :align: center