Overview

The JADE development environment provides the External Components Browser, which is accessed by selecting the External Component Libraries command from the Browse menu.

The External Components Browser contains two sheets: the ActiveX sheet and the .NET Framework sheet, to enable you to import and maintain ActiveX controls and automation server library objects and .NET framework library objects, respectively.

Each sheet of the Browser contains a list of all Active X control and automation server libraries or .NET libraries that were previously imported into the current schema.

If you have not yet imported an ActiveX type or .NET library, nothing is displayed in the respective sheet of the External Components Browser. Only one External Components Browser for the current schema can be open at any time. However, you can have concurrent open External Components Browsers for different schemas in a JADE development session.

You can change your default browser options, if required, by using the Browser sheet, accessed from the Options menu Preferences command.

JADE does not support the creation of ActiveX and .NET assemblies without a default constructor. If the constructor method of a class expects a parameter, exception 14577 is raised, stating that the constructor could not be found.

If you cannot modify the class, consider writing an ActiveX or .NET wrapper class. For example, the following class definition does not have a default constructor.

DotNetClass
{
     public DotNetClass(int arguments)
     {
     }
}

When you attempt to run the JadeDotNetType class createDotNetObject method after importing this example .NET assembly into JADE, exception 14577 is raised. If you have been supplied with only the assembly and not the code, you can create a wrapper method, as shown in the following example.

using AssemblyName.DotNetClass;
    public class DotNetClassWrapper
    {
        DotNetClass dnc;
        int passInt=0;
        public void setDotNetClass(int x)
        {
            passInt = x;
        }
        public void createDotNetClass()
        {
            dnc = new DotNetClass(passInt);
        }
        public DotNetClass getDotNetClassObj()
        {
            if(dnc != null)
                return dnc;
            else
                return null;
        }
    }

Compile the wrapper method, linking it to the DotNetClass assembly, before importing the .NET wrapper assembly and access the DotNetClass class as follows.

vars
    dnc        : DotNetClass;
    dncWrapper : DotNetClassWrapper;
begin
    create dncWrapper transient;
    dncWrapper.createDotNetObject;
    dncWrapper.setDotNetClass(10.Integer);
    dncWrapper.createDotNetClass();
    dnc := dncWrapper.getDotNetClassObj().DotNetClass;
epilog
    delete dncWrapper;
end;