Джедайское программирование

В стандартную поставку Delphi уже входит большое число всевозможных компонентов. Однако, как показывает практика, во многих случаях их функциональности недостаточно. Конечно, никто не запрещает написать собственный компонент, отвечающий именно вашим требованиям. Но такой путь может быть очень длинным, и его использование не всегда оправданно. Так что волей-неволей приходится задумываться об установке дополнительных компонентов. Один из самых популярных наборов подобного рода для Delphi разрабатывается в рамках проекта «Jedi» и носит название JVCL (JEDI Visual Component Library).

Коротко
Проект JEDI является одним из самых известных сообществ OpenSource. В его рамках ведется разработка различных дополнений для среды Delphi. На данный момент наиболее активные ветви проекта — это JCL (Jedi Code Library) и JVCL (JEDI Visual Component Library). В рамках первой ветви ведётся работа над системными модулями для Delphi, многие из которых являются отличной заменой своим стандартным аналогам. В рамках же JVCL разрабатывается замена штатной библиотеке VCL, чьи возможности уже много лет остаются примерно на одном уровне.
На сегодняшний день в состав JVCL влились такие известные проекты, как «Globus» и «RxLibrary», а также многие другие библиотеки и компоненты отдельных разработчиков.
Надо отметить, что проект JEDI заручился официальной поддержкой Borland и одно из зеркал его официального сайта находится на сервере этой корпорации.

Установка
Для правильной установки JVCL понадобится скачать либо полный пакет (включающий в себя также и JCL) размером 8 Мбайт, либо две эти библиотеки по отдельности.
Обратите внимание, что установка JVCL невозможна без предварительной установки JCL.
После того, как обе библиотеки скачаны, распакуйте их в отдельную папку. Причем имя папки не должно содержать русских символов! Во всяком случае, при наличии таковых некоторые компоненты у меня устанавливаться отказались. Хотя, возможно, эта проблема как-то связана именно с моей системой.
Сам процесс установки обеих библиотек организован очень оригинально. Вы запускаете файл install.bat, находящийся в папке JCL. Этот скрипт вызывает компилятор Delphi и собирает из исходников программу установки, которая в свою очередь компилирует библиотеки JCL и регистрирует их в IDE.
Аналогично работает и инсталлятор JVCL. Только он в ходе работы предложит вам выбрать необходимые пакеты. Каждый пакет содержит определённый набор компонентов (обычно сгруппированных по функциям: панели, кнопки и тому подобное). Кроме того, вы можете выбрать тип устанавливаемых пакетов: версия для VCL или версия для CLX (напомню, что CLX версия является универсальной: программы, написанные с её использованием можно без модификаций компилировать как в Delphi для Windows так и в Kilyx для Linux).
Замечание: перед установкой JCL или JVCL необходимо закрыть все окна Delphi IDE. В противном случае установщик откажется работать!

После установки в палитре компонентов появится более двух десятков вкладок, каждая из которых содержит от 2 до 30 компонентов (всего около трёх сотен!).

Обзор компонентов
Так как количество компонентов, входящих в состав JVCL, просто огромно, я не буду описывать их все. Вместо этого перечислю основные категории и коротко расскажу о самых, на мой взгляд, интересных компонентах каждой.
1. Non Visual. На этой вкладке содержатся «невизуальные» компоненты. Среди них, к примеру, можно найти Translator (удобнейшее средство для создания многоязычных интерфейсов), компоненты для работы с тегами ID3, значок в трее, средство для ограничения времени работы программы и ещё около трёх десятков различных компонентов.
2. Persistence. Здесь собраны компоненты, облегчающие сохранение настроек. С их помощью можно одной строкой кода сохранить настройки всех интерфейсных компонентов.
3. Application, Forms. C помощью компонентов этой вкладки можно расширить функциональность вашего приложения и его отдельных окон. Здесь есть «Аниматор», добавляющий эффекты при открытии окна, «Магнит», заставляющий окна липнуть друг к другу, и много ещё чего…
4. Data Access и другие. Я не буду подробно останавливаться на этих вкладках (всего их около десяти). Скажу лишь, что они содержат компоненты для работы с различными базами данных. Во многом эти компоненты схожи со стандартными, но их возможности гораздо шире.
5. Encrypt, Compress. Как видно из названия, в эту категорию попали компоненты, отвечающие за шифровку и сжатие данных. В частности, с их помощью вы можете работать с .cab-архивами, использовать библиотеку zLib, а также алгоритмы шифровки «Cipher».
6. Buttons. Количество кнопок, расположенных на этой вкладке просто огромно: их здесь более 20! Правда, некоторые имеют очень уж узкую специальность (например, есть кнопка, вызывающая меню «Последние документы»).
7. Bars, Panels. Здесь вы найдёте около 40 различных панелей (плавающих и не очень). К примеру, есть панель, размеры которой можно без лишней мороки изменять во время работы программы. А ещё есть панель-палитра, которая будет незаменима при написании графических редакторов.
8. Labels. Не поверите, но в JVCL даже обычных меток почти десяток! Одна из них, например, может рисоваться с использованием спецэффектов (прокрутка, «выпадение» символов, «рэндомайзер»), а другая — вообще рисует символы, используя фрагменты шкурок от WinAMP’а!
9. List, Combos. Списков в наличии тоже немало (больше трёх десятков). Есть, к примеру, готовый PlayList. Ну, а среди выпадающих списков водятся такие, с помощью которых можно выбрать цвет или шрифт.
10. Scrollers. На этой вкладке собранны компоненты, умеющие что-либо прокручивать. Например, текст (можно быстро сделать что-то вроде титров из «StarWars») или панель с кнопками (как в палитре Delphi).
11. Trackers, Sliders, Splitters. На этой вкладке с длинным названием расположены всего семь компонентов, хотя, на мой взгляд, их можно было заменить тремя, но более универсальными. Собственно, что это за компоненты, понятно из названия вкладки. Из особенностей можно отметить графический «Slider» (очень удобно при использовании в программе со скинами — сам проверял).

Примечание. Проблема избыточности вообще типична для JVCL. В разное время в библиотеку включались целые наборы компонентов, и функциональность многих из них неизбежно пересекалась. К настоящему времени часть сторонних библиотек уже «расформирована» и компоненты из них «слились» со своими аналогами (или заменили их). Так, например, было с библиотекой RxLib. Но некоторые компоненты до сих пор являются почти полными клонами друг друга, хотя разработчики грозятся это исправить.

12. Visual. В эту категорию попали визуальные компоненты, которым не нашлось места на других вкладках. К примеру, тут есть «Кубик» (наподобие игрального) или «Лупа». А ещё сюда затесался «Предпросмотр рисунков» (рисунки отображаются в виде миниатюр с подписями).
13. Edits. Если вы ещё не догадались, поясню — тут обитают «Редакторы». Причём как маленькие («выбор папки», «ввод значения»), так и большие (аналоги Memo, с подсветкой синтаксиса и поддержкой Unicode).
14. Images. Здесь тоже всё понятно без комментариев — рисунки, они и в Африке рисунки. Правда, по функциональности они намного превосходят стандартные (возможна трансформация изображений, анимация и другое). В эту же категорию попал компонент для захвата видео.
15. Dialogs. Это одна из самых «многолюдных» вкладок. Диалогов в JVCL более пятидесяти. Большинство из них — стандартные системные диалоги (форматирование диска, ошибка, запрос следующего диска, поиск компьютера…), вызывать которые с помощью этих компонентов намного удобнее, чем средствами WinAPI.
16. Docking. Немногочисленные компоненты, собранные на этой вкладке, позволяют организовать интерфейс из плавающих панелей (как это сделано в Delphi и других средах разработки).
17. DotNet. Компоненты из этой категории совместимы с технологией «.NET». Правда, я так и не понял, используют ли они dotNet или просто изображают его.
18. Globus. Сюда входят составляющие, ранее выходившие в составе библиотеки Globus. Многие из них повторяют функциональность других компонентов JVCL, но есть и уникальные.
19. Internet, Network. Думаю, понятно, что сюда попали компоненты, ответственные за работу с сетью. Лично мне здесь не хватает только браузера, который бы мог просматривать страницы без сторонних модулей (типа движка IE). Всё остальное тут есть.
20. NavPanel. Здесь собраны компоненты для построения навигационной панели. Панель эта представляет собой нечто среднее между интерфейсом Outlook (по функциональности) и Office 2003 (по внешнему виду).
21. Print Preview. Про эти компоненты скажу коротко: просмотр перед печатью всего-чего-угодно.
22. System. «Системные» компоненты. Полтора десятка. От просмотра буфера обмена и файловых операций до управления HID-устройствами и джойстиками.
23. Wizard. Мастер. Просто мастер. По стилю и по сути напоминает InstallShield.
24. XP Controls. Элементы управления в стиле XP (или Office), одинаково выглядящие в любой версии Windows. В наличии есть кнопка, флаг, индикатор прогресса и панель. Стилем можно управлять прямо во время работы программы.

У-ф-ф! Вроде всё… Хотя, конечно, это лишь верхушка айсберга. На самом деле есть ещё больше десятка категорий и несколько сотен компонентов, не включённых в этот обзор.

Примеры…
В штатную поставку JVCL входит огромное количество примеров, демонстрирующих всю мощь этой уникальной библиотеки. Если вы не хотите компилировать их по отдельности, то можете воспользоваться специальным скриптом (работающим аналогично инсталлятору JVCL).
Ещё один способ познакомиться с возможностями Джедая — это так называемый «MegaDemo», в окне которого собраны все примеры!

Заключение
Ну что тут ещё можно сказать… Если вы установите эту библиотеку, то качать дополнительные компоненты для своих программ придётся в несколько раз реже, чем вы это делали обычно. А может, и вообще больше не придётся. Здесь есть всё, что только может понадобиться разработчику.
Хотя есть у JVCL и несколько минусов. Главный — это большой размер дистрибутива, регулярное обновление которого может стать проблемой в наших условиях (впрочем, обновляется он не так уж и часто).
Второй минус — большой объём лишнего кода, включаемого в исполнимый файл. Использование даже одного компонента из JVCL «тянет» за собой базовые файлы библиотеки, что приводит к солидному «утяжелению» программ.
Третий, последний, минус — медлительность в работе некоторых компонентов. Особенно это относится к компонентам графическим. Из-за этой неторопливости отрисовка многих элементов интерфейса превращается в сплошное «мельтешение».
Если первые два минуса не всегда критичны, то третий ставит под сомнение использование графических компонентов JVCL в приложениях с активно меняющимися окнами (например, при использовании «шкурок»).
Но во многих случаях, когда все эти недостатки несущественны, библиотеку JVCL можно смело рекомендовать всем разработчикам, ведь она позволяет существенно сэкономить время на написание приложений. А время, как говорится, — деньги…

Теги:,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *