Using the extension

Using nonvisual classes

In PowerScript, use the classes in a nonvisual extension just as you would a custom class user object: Declare an instance of the object, use the CREATE statement to create the instance, invoke the object's functions, and destroy the instance when you have finished with it. You can inherit from the native classes if you want to add functions or events to the class.

At runtime, instances of the native class are created as normal PowerBuilder objects.

In this example, the extension module contains two nonvisual native classes: fontcallback and fontenumerator. A PowerBuilder custom class user object, nvo_font, inherits from the fontcallback class. These statements create instances of both classes:

fontenumerator fe
nvo_font uf
fe = create fontenumerator
uf = create nvo_font

After an instance of a native class has been created, the PowerBuilder application can call methods on the object. Each native class must implement an Invoke method that the PowerBuilder VM calls when the PowerBuilder application calls one of the native class's methods. Then, the Invoke method dispatches the method call based on the method ID or method name. The method name is used when a native method is called dynamically.

Using the previous example, this statement invokes the enumprinterfonts method of the instance of the fontenumerator class:

fe.enumprinterfonts(uf)

Destroying the PBNI object instance

When the PowerBuilder application no longer needs an instance of a nonvisual class and a DESTROY statement is issued, by either the user or the garbage collector, or when the window or visual control that contains a visual class is closed, the PowerBuilder VM destroys the instance by calling the native class's Destroy method.