I would like to know if there is any way to use a VCL plugin on a VCL host without using Runtime Packages. I’ve an application that use some 3rd party components like the Dev Express grid and editors for example, and I don’t want to distribute the BPL of any of those components.
I’ve already tried to find something on the forum about this, and I read in a topic there is a COM-Compatible mode that could allow this, but I didn’t find anything about it in the documentation.
I’ve already tried using the plugin on a VCL host without the Runtime Packages and I could make it works, but apparently the module is never fully unloaded in the Host application.
I’m going to try to use Hydra to make both Non-Visual and Visual plugins, so is there any way to do this?
You can in theory, but then you are extremely limited in what types you can pass between plugins and between host and plugin, as they each have their own copy of the VCL, own heap, etc.
Another option, if you’re not opposed to packages per se, but don’t want to use the BPLs for the third-party components is to use the System (and Hydra) packages, but compile the DexEx controls and any other code you might need shared between plugins into your own custom package…
You can build both host and plugin w/o runtime packages and load plugin with
in this mode you can communicate via cross platform interfaces (
Hydra.Core.Interfaces.pas) only. You can’t pass Delphi objects between host and plugins because runtime packages aren’t used. VCL interfaces (
Hydra.VCL.Interfaces.pas) also aren’t supported.
check the Passing Interfaces between Host and Plugins article for more information.