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 three sheets: the ActiveX sheet, the .NET Framework sheet, and the OpenAPI sheet, to enable you to import and maintain ActiveX controls and automation server library objects, .NET framework library objects, and OpenAPI specifications, respectively.

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

If you have not yet imported an ActiveX type, OpenAPI specification, 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, OpenAPI, 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, OpenAPI, 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;