Thursday, 9 April 2015

Unofficial JEDI JCL and JVCL patch for Delphi XE8

- and honorable mentioning of the new GetIt package manager in XE8.

Update 21. September 2015: Delphi 10 Seattle now has JCL and JVCL available in GetIt.

Update 10. April 2015: Seems like a proper official update is being done - activity on GitHub - Thanks :-) - so ignore my patch files. So I don't have to roll up my sleves during the weekend to do a proper job. EMBT has expressed interest in getting the JVCL into the GetIt package manager.

I was in the process of mixing together a small mock-up – using VirtualTreeView and some JEDI VCL components in XE7, when I couldn't resist the urge to install XE8 on that machine – since there are many of the new features I wanted badly.


Normally I do install a new version of Delphi in parallel to the version I am currently using – but my HDD space wasn't overwhelming – and I hadn't that many third-party components installed on that machine.

Who dares wins – so I uninstalled XE7 – and removed every trace of Android SDKs and other huge leftovers. Installed XE8 – used the new GetIt package manager – which is great – never has VirtualTreeView been that easy to install, see picture below.



I have only one “but” (does that make me an arse? :D) – when only having Delphi or the Delphi personality of RAD Studio installed, why show the C++ packages and vice verse? I'll live - until there are many more pages of packages than now.

Well one click on an install button and 5 seconds later VirtualTreeView was installed in the IDE (I did the same for Abbrevia) - great IDE feature which I have missed. Other people have been blogging about this great feature.

Back to the topic - I did also need the JVCL and by that also the JCL installed - and since it seemed that the latest pull from the GitHub repository (https://github.com/project-jedi) didn't install on XE8 - and only had some mentioning of a possible post-XE7 release in some places - I did start to do it myself - there will probably be an official and more correct update to the repository in a very near future.

But I thought sharing my changed and added files could maybe help others in a hurry - and also ease the process for the next releases - until the JediVCL gets GetIt enabled - if someone has these plans.

I will just briefly walk through what I did - so that the people involved in the project can tell what I did wrong or maybe missed - but it seems to work at my end.

There are a few minor code changes due to missing version numbers, but also a couple of variable types that needed changed.

For both the JCL and JVCL:

  • A copy of the /packages/d21 -> /packages/d22 was done, and new .groupproj's were created.
  • Empty /lib/d22
  • .inc files were adjusted
Arrays where updated to include the XE8 version numbers in the source where needed, and in jcl/source/windows both jclCOM.pas and jclStructStorage.pas needed changes of variable types. I did also update the jvcl\jvcl\devtools\bin\pgEdit.xml file - not sure I needed to do that.

I did not walk through the Git history - which would have helped - and I did not bother to create new project files - so this ended up as a fast hack - an XE7/8 hybrid - so use with care - especially together with XE7 on the same machine - you would probably do better waiting for an official update where packages were not just a copy of the XE7 ones.

But if anyone has the expertise and time please do commit any changes needed for an "official" XE8 JVCL/JCL update.

Compressed files with changed and added files here. To install just get the latest (mine were from yesterday (8 April 2015)) source from GitHub - as described - and install JCL first and JVCL second - and if it is working with XE8 you're good, and there is an official release - otherwise wait or try to use my additions - just unzip my file into your JCL/JVCL directory and you should be good - no promises - but it works for me :-)

Source file: jcl_jvcl_XE8.zip

2 comments:

  1. is there a way only to install JvDbTreeView

    ReplyDelete
    Replies
    1. As far as I remember you do get the chance select which units you want during installation - but I do not think it is worth the effort. Now both the JCL and the JVCL is available in GetIt - and you can go in and disable which packages you want to have loaded in the IDE - so that your component pallet does not contain too much variants and duplication - which the JVCL does add :-) Could the task at hand be handled by a TVirtualStringTree? They are fast but there is a small learning curve.

      Delete