Переход с RxLib на Jvcl. Какие изменения? Это материал для тех, кто ещё использует библиотеку RxLib и рассматривает возможность перехода на юникод. В 2002-году библиотека RxLib была официально включена в состав JVCL. В JVCL есть утилита для быстрой замены всех Rx компонентов, функций и юнитов на JVCL-версии. См. пост Jvcl Dev Tools: JvclConvert. Почему стоит перейти на JVCL: 1. В отличие от RxLib, JVCL развивается. Ошибки исправляются. Регулярно выходят версии с поддержкой новых версий Delphi. 2. JVCL контролы поддерживают новые версии Windows и Windows-стили. В этом посте перечислены все Rx компоненты. Для каждого указан соответствующий Jvcl компонент, package, и краткий список отличий. Общие свойства Следующие свойства были заменены у всех компонентов: Свойство Ctl3D заменено на Flat. Свойство Opaque заменено на Transparent. Закладка Rx Tools Закладка Jv Non-Visual TrxWindowHook –> TjvWindowHook TrxTimerList –> TjvTimerList. У TrxTimerTimerEvent есть свойство Tag, а у TJvTimerEvent его нет. TrxPageManager –> TjvPageManager TrxMergeManager –> TjvMergeManager TrxMruManager –> TjvMruManager. Доработан. TrxMainMenu –> TjvMainMenu. Интегрирован с остальными JVCL-компонентами, добавлена поддержка стилей, ItemPainter, отдельные ImageLists для разных состояний. TrxPopupMenu –> TjvPopupMenu. Существенно доработан. Интегрирован с остальными JVCLкомпонентами, есть поддержка стилей и ItemPainter, отдельные ImageLists для разных состояний. TStrHolder –> TjvStrHolder TrxTrayIcon –> TrxCalculator –> TjvTrayIcon. Компонент был немного доработан. TjvCalculator. Новые события: OnClose и OnShow Закладка Jv Application, Forms TrxAppEvents –> TjvAppEvents TrxGradientCaption –> TjvGradientCaption. Доработан. Закладка Jv System TrxFolderMonitor –> Этого компонента нет в JVCL. Наиболее подходящая замена – это TjvChangeNotify . TClipboardViewer –> TjvClipboardViewer Закладка Jv Dialogs TrxLoginDialog-> TjvLoginDialog. Существенно доработан. Вместо Ini-файла теперь использует TjvAppStorage. TDualListDialog –> TjvDualListDialog. Доработан. Закладка Jv Bars, Panels TSecretPanel -> TjvSecretPanel TSpeedBar -> TjvSpeedBar. Закладка Jv Persistence TFormPlacement и TFormStorage –> TjvFormStorage. TjvFormStorage были существенно доработаны. Позволяет хранить настройки не только в Ini-файле и в Registry, но и в XML, и базе данных. Этот компонент используется другими JVCL компонентами для хранения внутренних настроек. Закладка Jv Images, Animators TPicClip –> TJvPicClip Rx Controls У всех визуальных контролов появилась поддержка тем Windows. Закладка Jv Edits TrxComboEdit –> TjvComboEdit. Добавлена поддержка стилей Windows, свойство Action, поддержка DataConnector (работа с БД). TFilenameEdit –> TjvFileNameEdit. Добавлена поддержка стилей, обновлена иконка на кнопке, добавлено автодополнение (при наборе названия файла с клавиатуры появится выпадающий список подходящих файлов), поддержка ImageList для картинки на кнопке. TDirectoryEdit –> TjvDirectoryEdit. Добавлена поддержка стилей, обновлена иконка на кнопке. Добавлена возможность настраиваться опции Win32 диалога. Используется обновлённый диалог. Добавлено автодополнение (при наборе названия файла с клавиатуры появится выпадающий список подходящих файлов), поддержка ImageList для картинки на кнопке. TDateEdit –> TjvDateEdit. Добавлено: БД (через DataConnector), Action. TCurrencyEdit –> нет. TrxCalcEdit –> TjvCalcEdit TrxSpinEdit –> TjvSpindEdit. Немного доработан. TrxRichEdit –> TjvRichEdit. Функционал существенно расширен. Подробнее смотрите здесь: TjvRichEdit. Закладка Jv Lists, Combos, Trees TFontComboBox –> TjvFontComboBox. Расширены опции, добавлена поддержка MRU (Most Recently Used), добавлено отображение иконки типа шрифта, немного изменён режим preview. TColorComboBox –> TjvColorComboBox. Немного доработан. TrxDrawGrid –> TjvDrawGrid. TTextListBox –> TjvTextListBox. TrxCheckListBox –> TjvxCheckListBox (или TjvCheckListBox). Пропало свойство HintSource. Закладка Jv Labels TrxLabel –> TjvLabel. Существенно доработан. Закладка Jv Visual TrxClock –> TjvClock. Появилась возможность отображать дату. Закладка Jv Trackers, Sliders, Splitters TrxSlider –> TjvxSlider. При перемещении бегунка курсор больше не изменяется. Поддержки тем Windows нет. TrxSplitter –> TjvxSplitter. Поддержки тем Windows нет. Закладка Jv Visual TrxDice –> TjvDice (интересно, этот компонент хоть кто-нибудь всерьёз использует?:)) Закладка Jv Images, Animators TAnimatedImage –> TjvAnimatedImage. Свойство Opaque переименовано в Transparent. TrxGifAnimator –> TjvGifAnimator. Добавлено свойство Threaded. Закладка Jv Buttons TrxSpinButton –> TjvSpinButton. TrxSpeedButton –> TjvSpeedButton. Появилась настройка Hot Track Options. TrxSwitch –> TjvSwitch Rx DbAware Закладка Jv Data Controls TRxDBGrid -> TjvDBGrid. Существенно доработан. См. описание Jvcl DbGrid-ов. TrxDbComboEdit –> TjvDbComboEdit TrxDbDateEdit –> TjvDbDateEdit TRxDBLookupList -> TjvDbLookupList TRxDBLookupCombo -> TjvDbLookupCombo TRxLookupEdit -> TjvDbLookupEdit TDBDateEdit -> TjvDbDateEdit. TRxDBCalcEdit -> TjvDbCalcEdit TRxDBRichEdit -> TjvDBRichEdit. Включает те же улучшения что и TjvRichEdit TDBStatusLabel -> TjvDbStatusLabel TRxDBComboBox -> TjvDbComboBox Закладка Jv Data Access TRxMemoryData -> TjvMemoryData. Доработан: добавлены новые свойства и события. Закладка Jv BDE TRxQuery -> TjvQuery TSQLScript -> TjvSQLScript TMemoryTable -> TjvBDEMemoryTable TDBSecurity -> TjvDbSecurity. Свойство IniFileName заменено на AppStorage и AppStoragePath. TQBEQuery -> TJvQBEQuery TRxDBFilter -> TjvDbFilter TDBProgress -> TJvDbProgress TBdeItems -> TjvBDEItems TTableItems -> TjvTableItems TDatabaseItems -> TjvDatabaseItems TDBIndexCombo -> TjvDbIndexCombo Для перехода понадобятся следующие JVCL пакеты: JVCL Application and Form Components - TjvAppEvents, TjvGradientCaption JVCL BDE Components - компоненты с закладки Jv Bde JVCL Core Components – AppIni JVCL Custom Controls – TjvTrayIcon JVCL Database Components - Db контролы JVCL Dialog Components – TjvDualListDialog, TjvLoginDialog JVCL Multimedia and Image Componets – TjvAnimatedImage, TjvGifAnimator JVCL Non-Visual Components – TjvMergeManager, TjvPageManager, TjvStrHolder JVCL Standard Controls – большая часть редакторов (эдиты, комбобоксы) JVCL System Components – TjvFormStorage, TjvChangeNotify, TjvClipboardViewer, TjvMRUManager, TjvWindowHook JVCL Visual Controls – TjvxSplitter, TjvSpeedBar, TjvClock, TjvDice TDelphi: будни Delphi блоггера: JVCL dev tools JVCL содержит несколько приятных утилит, способных упростить разработку библиотек компонентов. Эти утилиты находятся в папке JVCL\devtools. Большая часть из них работает из командной строки. Большинство утилит описаны в файле devtools.txt. Этот пост является частичным переводом того файла с комментариями. Наиболее интересным является JVCLConvert, позволяющий легко перейти с использования RxLib на JVCL. Также, разработчику библиотек может быть интересен PackagesGenerator позволяющий создавать по шаблону файлы проектов и групп проектов для разных версий Delphi (PackagesGenerator не описан в devtools.txt и я с ним тоже не разбирался). Чтобы скомпилировать утилиты нужно запустить CompileDevTools.bat. Однако, если у вас на компьютере установлено несколько версий Delphi, то лучше скомпилировать их вручную в IDE, открыв группу проектов devtools.bpg. При использовании DFMCleaner я столкнулся с ситуацией, когда преобразованная форма отказалась читаться в Delphi6. Я не исследовал причину, но подозреваю что это случилось из-за того, что DFMCleaner был скомпилирован компилятором от Delphi 2010. После перекомпиляции вручную в Delphi 6, всё заработало должным образом. Перед использованием утилит, обязательно сделайте резервную копию исходников (а ещё лучше, используйте систему контроля версий, например subversion). JVCLConvert Сканирует указанные файлы и заменяет в них одну строку на другую по словарю. В JVCL входят словари для конвертации: RxLib в JVCL; RaLib в JVCL; design eXperience в JVCL; словарик для форматирования ключевых слов в CamelCase нотацию; других библиотек, которые вошли в состав JVCL; а также словари для преобразования исходников из старых версий JVCL в новые. MakeRC Создаёт файл new.RC, из файлов в определённой директории. Каждая строка в полученном rc файле выглядит так: <NAME> BITMAP "<NAME>.BMP" Полученный rc файл можно скомпилировать в DCR-файл командой: brc32 new.rc -r -fonew.dcr MakeDOF Генерирует DOF файл по шаблону. Сканирует подкаталоги и переписывает все существующие файлы. MakeCFG Генерирует CFG файл по шаблону. Сканирует подкаталоги и переписывает все существующие файлы. Bpg2Make Создаёт MAK из файла группы пакетов BPG. JConvert JConvert конвертирует DFM файлы из бинарного формата в текстовый и обратно. В отличии от утилиты convert.exe, поставляемой с Delphi, JConvert обрабатывает только те DFM'ки, которые действительно необходимо конвертировать: если файл уже в нужном формате, то он не будет изменён. Другое отличие – это наличие параметра -c(heck), который позволяет узнать сколько DFM-ок должно быть конвертировано, без выполнения конвертации. isu Убирает неиспользуемые записи из dfn-файлов (файлы для перевода на другие языки). Работает с текущим каталогом и подкаталогами, не создаёт резервные копии, и не имеет опций. ErrLook Delphi клон утилиты ErrLook из Visual Studio. Позволяет искать коды ошибок. См. документацию. Для компиляции требует HTMLHlp.pas из http://delphi-jedi.org (API Library Files) DFMCleaner(dc) Убирает неподдерживаемые свойства из DFM-ок. Свойства которые нужно убрать считываются из списка. Незаменимый инструмент, если необходимо работать с dfm-ками, которые должны открываться в разных версиях Delphi. В комплекте есть готовые списки свойств появившихся в последних версиях Delphi, таких как ExplicitHight. dxgettextResstr Извлекает в resourcestring все строки совместимые с dxgettext "_(строка)" . Подробнее см. devtools.txt. ReadPalettes (Florent, rom) Позволяет извлечь информацию об установленных компонентах в CSV файл. Устанавливается как эксперт. Подробнее см. usage.txt. Не скомпилировались MakePNG MakePNG. Преобразует BMP файлы в PNG. Требует сторонний компонент TPngImage от Gustavo Daud. (http://pngdelphi.sourceforge.net/) Res2Bmp Извлекает bitmap-ы из RES и DCR-файлов и сохраняет их как BMP. Требует компоненты от Colin Wilson (Resource Utilities and Graphics Utilities). (http://www.wilsonc.demon.co.uk/delphi.htm)