Motto

В тихом саду здравомыслия
Пусть на вас постоянно падают
кокосовые орехи пробужденности.
Чогьям Трунгпа РИНПОЧЕ


Версия для мобильного


JCL и JVCL

Описание JCL и JVCL

Все библиотеки описанные на этой странице бесплатные и поставляются с исходниками. Библиотеки доступны по двум лицензиям: Mozilla Public License 1.1 и LGPL. Лицензия MPL позволяет использовать библиотеку в коммерческих проектах с закрытым кодом, а LGPL для использования совместно с GNU GPL кодом.

JCL – это библиотека для Delphi с открытым исходным кодом. JCL расшифровывается как JEDI Code Library. И неспроста она называется именно библиотекой кода, так как содержит только классы, интерфейсы, процедуры, функции и не содержит ни одного компонента.

JVCL – огромная библиотека компонентов для Delphi. JEDI Visual Component Library. Для работы JVCL необходимо наличие установленной библиотеки JCL.

JWSCL – JEDI Windows Security Library. Описание функционала JWSCL по ссылке.

Введение в JCL и JVCL – общее описание проектов, ссылки.

Описание JCL

Описание JVCL

  1. Описание редакторов JVCL (JvEdits). Описание Jv контролов для редактирования информации. (JvPickDate, JvMemo, JvDirectoryEdit, JvFilenameEdit и многих других).
  2. Описание DB Grid-ов в JVCL. Описание TJvUltimateDbGrid и чем он лучше стандартного TDbGrid.
  3. Валидаторы в JVCL. Jv Validators. Валидаторы в Delphi. Компоненты для проверки на корректность информации введённой пользователем.
  4. JvAppFrm package: Компоненты закладки JvApplication, Forms. Описание контролов JvTransparentForm, JvFormMagnet, JvAnimatedIcon, JvAppEvents, встраиваемых форм и других не очень полезных компонентов.
  5. Описание закладки JvWizard. Создание wizardа в Delphi.
  6. Невизуальные компоненты JVCL. Описание закладки JvSystem. Работа с буфером обмена, drag and drop, слежение за изменениями на диске, обмен данными с другими экземплярами программы, работа с джойстиком, единый обработчик исключений.
  7. Описание диалогов в JVCL. JvDialogs. Часть 1. Системные диалоги.Вызов стандартных диалогов (“Open with..”, “Add printer”, “Find files”, “Computer name”, “Change icon”, “Свойства файла” и других) Windows через JVCL.
  8. Описание диалогов в JVCL. JvDialogs. Часть 2.
  9. JVCL dev toolsописание утилит поставляющихся с JVCL.
  10. JvTimeFramework – делаем органайзер с помощью JVCL (публикации в блоге WebDelphi):
    1. Органайзер в Delphi. Введение.
    2. Свойства компонента TjvTFDays.
    3. Свойства компонента TjvTFDays. Продолжение.
    4. Методы TjvTFDays для работы с элементами события и областями сетки.
    5. Методы TjvTFDays: редактирование событий и работа с сеткой.
    6. Jv TimeFrameWork. Методы TjvTFDays: перемещение по событиям, выделение событий.

Мысли навеянные Delphi-кодингом 2. JCL+JVCL.

Переход с RxLib на JVCL

  1. Переход с RxLib на Jvcl. Какие изменения?
  2. Переход с RxLib на JVCL в деталях. Список пропавших в JVCL свойств и методов Rx-компонентов.
  3. Исходный код программы, использованной для сравнения методов и свойств Rx и JVCL компонентов.

Читать дальше..

19 комментариев:

  1. Не подскажете как использовать TJvTFGantt. Он вообще визуальный или нет? Даже в справке JVCL Time Framework Runtime Package ничего толкового найти не удалось…

    ОтветитьУдалить
  2. Анонимный, спасибо что заметили. Ссылку исправил.

    Насчёт TJvTFGantt. Я его не исопльзовал, но вот что мне удалось узнать из исходников. Это визуальный компонент, но его нет в палитре компонентов JVCL. Он объявлен в модуле JvTFGantt.pas. Его можно создать в коде. Насколько я понял из свойств, этот компонент позволяет просматривать события из Jv Time Framework в виде Gantt chart. Т.е, события он получает из TJvTFScheduleManager. Как-то так.

    ОтветитьУдалить
  3. У меня JVCL не устанавливается, ругается на отсутствие system.types.dcu. В чем может быть проблема?

    ОтветитьУдалить
    Ответы
    1. Сложно сказать. Вы не указали ни версию Delphi, ни версию JVCL.

      Возможные причины:
      1) Ошибка с настройками Delphi
      2) Ошибка в JVCL
      3) Ваша ошибка

      Если это JVCL 3.46, то там вроде была проблема в установщике, которая была исправлена в версии 3.47.

      Я обычно устанавливаю самую последнюю версию JVCL прямо из SVN. Изредка обновляю и пересобираю.

      Удалить
    2. такая же беда. D7 JVCL 3.47
      я закомментировал строку system.types в GenerateDefines.pas
      вроде установилось без ошибок. посмотрим что дальше будет.

      Удалить
    3. Вот то же самое. JVCL 3.47, Delphi XE, батник не запускает инсталлер, ругается на отсутствие system.types.dcu. Перепробовал абсолютно все версии и варианты с sourceforge, не ставится. JCL установлен последний.

      Удалить
    4. Про Delphi XE сложно сказать. По идее, там такой ошибки быть не должно.

      Если хочется разобраться с причиной проблемы, то я посоветовал бы:
      1) Проверить, не установлена ли на этом же компе более старая версия delphi - быть может установщик собирается в dcc32, которая не поддерживает пространства имён.
      2) Если delphi только одна (XE), то проверить что при сборке инсталлера, указано использование пространства имён (namespace) system (ключ -ns"system")

      Если хочется просто решить проблему, то можно попробовать сделать так, как описано в предыдущем комментарии. Правда не уверен, что это не вызовет других проблем. :\

      Удалить
  4. Всё просто.
    открываешь GenerateDefines.pas
    и меняешь

    uses
    {$IFDEF HAS_UNIT_TYPES}
    System.Types,

    на
    Types,
    и все дела ))

    ОтветитьУдалить
  5. Не ставится jvcl - пишет каждый раз разные ошибки, но все на тему, что собрано не той версией чего-то там

    ОтветитьУдалить
  6. Была, давно еще такая библиотека - Globus Lib, которая то же вошла в состав JVCL. Так вот там был простенький и чудненький компонентик: glSmallFontDeffender (боюсь ошибиться в названии, но смысл понятен). Этот компонентик, размещенный на форме, защищал шрифты формы при масштабировании шрифтов в Windows.
    Если кто не в курсе, на фига это нужно, то я напомню: Очень поганенько выглядит приложение созданное в режиме "маленьких шрифтов", когда оно запускается на компе, где шрифты отмасштабированны. (по крайней мере в XP это было так), да. А вот этот компонентик спасал. Но вот незадача, перерыл я всю эту JVCL, но такого компонента не нашел :-(. Может я просто старенький уже, и типа в подобных фичах нет необходимости теперь? Так вот и собрал я простую формочку на RAD XE7 в W7 с маленькими шрифтами, потом шрифты в системе сделал 125% и формочка поплыла, как и раньше :-(, ну что за ...

    ОтветитьУдалить
  7. Подскажите, пытаюсь установить jcl на XE8 (пробовал и на XE10) не собирается даже инсталлятор.
    ругается на 'TJclWaitResult' and 'TWaitResult' в файле JclInstall.pas(2264)
    Это вылечить легко, инсталлятор собрал, но библиотека не компилится.
    Версия jcl: JVCL349CompleteJCL27-Build5676
    Подскажите, раньше (на XE4) ставил нормально! Что случилось?

    ОтветитьУдалить
    Ответы
    1. Может у вас неполная версия? Trial или какой-ниубудь lite с неработающим dcc32?
      Попробуйте запустить dcc32 отдельно и посмотреть что он выводит.

      А ещё - с таким вопросом лучше писать баг в jcl на github-e

      Удалить
    2. на dcc32 грешить странно... ошибки ведь идут на этапе компиляции, а не после подключения dcu к проекту.
      Значит исходники не полные или не верные.
      Где взять проверенную библиотеку jcl/jvcl?
      Я беру с http://wiki.delphi-jedi.org/index.php?title=JEDI_Code_Library

      Удалить
  8. На XE7 с небольшими правками поставил.
    Чёр знает что.
    По исходникам jcl/jvcl активно используются директивы условной компиляции, например
    {IFDEF BDE}

    Как/где посмотреть, текущее состояние на момент компиляции любой такой переменной?

    ОтветитьУдалить
    Ответы
    1. .inc файлы же. Всё в них. Если ставить через JCL/JVCL установщик, то этот установщик создаёт .inc файлы из шаблона для выбранных версий Delphi.

      Удалить
  9. Но ведь используются не только создаваемые jcl/jvcl *.inc файлы со своими директивами, но и директивы определённые в других библиотеках и в самой Delphi. Например текущая версия RTL...
    Прогнал в Far поиск по всему каталогу jcl/jvcl и по каталогу исходников "C:\Program Files (x86)\Embarcadero\Studio\17.0\source\" с маской *.* - найдено только упоминание RTL290_UP
    получается директива не определена...
    Что за директива, что она означает, когда может быть определена???

    ОтветитьУдалить
    Ответы
    1. В каждом исходнике jcl есть такой инклюд:
      {$I jcl.inc}
      который говорит, что вот в этом самом месте необходимо прочитать файл jcl.inc.
      jcl.inc в свою очередь ссылается jedi.inc, где и должны быть определены дефайны вида RTLXXX_UP, DELPHIXXX_UP, COMPILERXXX_UP.

      Все эти директивы нужны для удобства чтения кода, т.к. сама Delphi использует не очень понятные номера (конечно это можно оспорить) - см. http://docwiki.embarcadero.com/RADStudio/XE8/en/Compiler_Versions

      Если у вас проблемы компиляции - возможно у вас:
      -не та версия jedi.inc
      -есть несколько версий этого файла, и при компиляции подхватывается не та версия

      Удалить
  10. Скорее всего версия не та. Поиск вообще не обнаружил ни одного файла в котором упомянуто RTL290_UP, кроме мест где его уже проверяют... Чудеса!

    ОтветитьУдалить

Постоянные читатели