JVCL – бесплатная библиотека с открытым исходным кодом, которую можно использовать в ПО с закрытым исходным кодом по лицензии MPL1.1, так и в свободном ПО.
Стоит помнить, что если вы найдёте ошибку (а поработав с этими компонентами вплотную, вы наверняка найдёте не одну недоработку), то не стоит о ней умалчивать. Вы действительно поможете Delphi-сообществу, записав отчёт об ошибке и приложив к нему небольшую программу, иллюстрирующую ошибку в баг-трекере Jedi.
Также, помните о том, что для большинства компонент доступны программы-примеры. Они находятся в папке JVCL\Examples.
Из всех контролов это закладки, мне были интересны только TjvFilenaneEdit, TjvDirectoryEdit, TjvRichEdit и TjvHLEditor (подсветка синтаксиса в Delphi). Тем, кто использует неюникодную версию Delphi может быть интересен TjvHLWideEditor (редактор с подсветкой синтаксиса, поддерживающий юникод).
Общие свойства
DotNetHighlighting – это свойство есть у всех визуальных контролов. Оно отвечает за то, что при наведении на контрол мышки, внутри контрола будет рисоваться яркая синяя рамка. Однако, при включенных темах, рисование этой рамки сопровождается визуальными артефактами, поэтому я не советую использовать это свойство.
Все JVCL контролы имеют события: OnMouseEnter, OnMouseLeave.
Также, поведение JVCL-контролов можно расширять добавляя в проект стандартные JVCL Action-ы. Например, по умолчанию, большая часть JVCL редакторов не поддерживает горячую клавишу Ctrl+A (выделить всё). Чтобы активировать её, необходимо положить на форму ActionList, открыть редактор и добавить TjvEditSelectAll (New Standard Action и в раздел JVCL Edits).
Свойство Caret есть у многих Edit-контролов. Оно позволяет указать картинку, которая будет использоваться для рисования каретки.
Почти у всех есть свойство Flat. У большинства редакторов есть свойство ClipboardCommands – которое позволяет отключать пункты меню по работе с буфером обмена в Popup Menu.
У некоторых контролов есть свойство DataConnector – которое позволяет подключать этот контрол к датасету. У каждого контрола может быть своя реализация этого свойства. Я не тестировал его работу.
Для большинства компонентов JVCL можно найти доступны примеры показывающие, как работать с ними.
TJvEdit
Свойства: Caret, DataConnector, AutoHint – показывать в hint-e содержимое контрола, если текст не помещается в редакторе (не включайте его если Edit используется для ввода пароля в JVCL 3.39 и раньше).
Можно изменить цвет фона (DisabledColor) и шрифта для случая, когда свойство Enabled равно False.
Можно указать текст (EmptyValue), который будет отображаться, если Edit – пуст, и цвет этого текста (EmptyFontColor).
Есть свойство GroupIndex – которое позволяет объединять Edit-ы в группы. После добавления текста в один из Edit-ов, все остальные Edit-ы с тем же индексом будут очищены.
Есть возможность ограничить длину текста по пикселям (MaxPixel).
TJvMaskEdit
Аналог TMaskEdit. Есть свойства: Caret, DisabledColor.
TJvCheckedMaskEdit
TjvMaskEdit с встроенным CheckBox-ом.
TJvComboEdit
MaskEdit c кнопкой. Бывший TrxComboEdit. Поддерживает автодополнение из списка строк, может подключаться к датасету.
TJvCalcEdit
Компонент для ввода десятичных чисел. Бывший TrxCalcEdit. При нажатии на кнопку появляется всплывающее окно с калькулятором.
Редактирование директорий и названий файлов
TJvFilenameEdit
Бывший TrxFileNameEdit.
Компонент для ввода имени файла со встроенной кнопкой для показа диалога. Все свойства диалога настраиваются. Есть даже выбрать тип диалога, который появится при нажатии на кнопку (загрузить/сохранить, обычный/для картинок).
Есть поддержка Drag’n’Drop, т.е. в этот контрол можно перетащить файл мышкой. Поддерживает автодополнение (при наборе названия файла с клавиатуры появится выпадающий список подходящих файлов).
TJvDirectoryEdit
Компонент для ввода директории. Бывший TrxDirectoryEdit. Есть поддержка Drag’n’drop, автозавершения, настройки всех опций диалога.
TJvSpinEdit
Это бывший TrxSpinEdit. Стиль рисования кнопок можно менять.
Редактирование даты и времени
TJvDatePickerEdit
Контрол для выбора даты (только даты).
Есть CheckBox для отключения даты. Есть свойство для настройки текста, который будет отображаться, если дата не выбрана.
В качестве всплывающего календаря используется стандартный Windows-календарь. Есть возможность настроить свойства этого календаря.
TJvDateEdit
Контрол для выбора даты. Бывший TrxDateEdit.
В качестве всплывающего календаря использует собственный календарь, который позволяет выбирать дату, начиная с 1752 года.
Может работать с датасетом (есть свойство DataConnector).
Минус: в режиме редактирования стрелки вверх/вниз не работают.
TJvTimeEdit
Контрол для выбора времени. Может работать c датасетом (есть свойство DataConnector).
В остальном, контрол уступает стандартному TDateTimePicker-у в режиме dtkTime.
Другие контролы
TJvIPAddress
Контрол для ввода IP4-адреса. Позволяет получить адрес как в виде текста, так и в виде longword. Может работать с датасетом через свойство DataConnector.
TJvValidateEdit
Edit-контрол позволяющий проверить правильность введённого значения и отреагировать, если что-то не так (например, изменить цвет шрифта, если число выходит за пределы). См демку JvValidateEdit.
Вместо этого контрола, лучше воспользоваться полноценными валидаторами с закладки Jv Validators.
Многострочные редакторы текста
TJvMemo
Немного доработанный TMemo. Помимо общих JVCL свойств, имеет следующие новые свойства:
- MaxLines – максимальное число строк
- События: OnVerticalScroll, OnHorizontalScroll
TJvRichEdit
Существенно доработанный TrxRichEdit. Поддерживаются функции Rich Edit версий 1, 2 и 3. См. скриншот демки:
Поддерживается:
- форматирование фрагментов текста: bold, italic, underline (c разными типами и цветами подчёркивания), subscript, superscript, цвет, размер, шрифт;
- форматирование параграфов: отступы слева, справа, сверху, снизу, выравнивание, межстрочный интервал.
- табуляция;
- защита фрагмента текста от изменений, установка ему свойства Disabled, возможность сделать фрагмент текста невидимым;
- вставка картинок и объектов (например, таблицу Excel или документ OpenOffice);
- многоуровневое Undo и Redo
Не поддерживаются:
- таблицы;
- свойства, добавленные в Rich Edit только для совместимости с MS Word;
- морально устаревшие эффекты типа Emboss (хотя в RxLib они были).
Также обратите внимание на компонент TJvRichEditToHtml (закладка Jv Internet, Network), который умеет конвертировать Rich Text в Html (только текст с форматированием). Для этого компонента есть хороший пример.
TJvEditor
Многострочный редактор. Умеет организовывать текст в столбцы, умеет подсвечивать парные скобки. Поддерживает автовыравнивание, автозавершение, шаблоны, умные табы. Является базовым классом для нижеперечисленных.
TJvHLEditor
TjvEditor с подсветкой синтаксиса. Поддерживает следующие типы подсветки:
- Pascal
- C Builder
- SQL
- Python
- Java
- Javascript
- Visual Basic
- Html
- Perl
- Ini
- Php
- C#
- Coco/R
- NQC
- настраиваемый
Позволяет настраивать цвета для разных типов ключевых слов (св-во Colors).
TJvHLEdPropDlg
Диалог для настройки опций и схемы подсветки синтаксиса для JvHLEditor-a.
TJvWideEditor
Версия TJvEditor, поддерживающая Unicode в старых версиях Delphi.
TJvWideHLEditor
TjvHLEditor с поддержкой юникода. Работает даже в старых версиях Delphi.
Ссылки по теме
- Создание мастера (визарда) в Delphi с помощью компонентов Jv Wizards;
- Красивые всплывающие окна с помощью JVCL (Jv Dialogs);
- TJvDBUltimGrid - DbGrid с любыми редакторами полей;
- Все публикации по теме JVCL - самый полный обзор компонентов JVCL на русском языке.
- Общее описание библиотеки Jedi Code Library на руском языке.
Спасибо за статью!
ОтветитьУдалитьНе сравнивал jvHLEditor и SynEdit?
Я с SynEdit вообще не работал. Мне от подсветки нужно только подсвечивание синтаксиса SQL. И TjvHLEditor полностью удовлетворяет.
ОтветитьУдалитьНе работает компонент JvIPAddress, подскажите пожалуйста в чем проблема. Заранее спасибо
ОтветитьУдалитьПроблема в том, что он поломался. Почините его и он будет снова работать! Заранее пожалуйста.
УдалитьАнонимный, на вопрос поставленный таким образом НЕВОЗМОЖНО дать ответ. Попробуйте задать его на каком каком-нибудь форуме. =)
ОтветитьУдалитьHint: TjvIpAddress описан в юните JvComCtrls.pas.
Очень интересная статья.
ОтветитьУдалитьДля себя я почерпнул в ней много полезного и поучительного.
Огромная благодарность автору.
В TjvEditor (и скорее всего во всем семействе редакторов) не реализована функция Redo, что очень усложняет его использование.
ОтветитьУдалить