Переход с RxLib на Jvcl. Какие изменения?

advertisement
Переход с 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)
Download