Components can now publish classes! And even better, if your application is still in binary mode, you can now benefit from classes and object-oriented development by using a component (in project mode) to create your own classes and use them from your (binary mode based) application.
A 4D component is a set of methods and forms. As of 4D v19 R5, it is also a group of classes representing one or more functionalities that can be installed in different applications. The code editor’s completion system and other help systems have been updated to support your components’ classes and methods to make your coding smoother.
You can make your classes usable in your host project by adding a namespace in your component settings when you generate your component. For the internal classes you want to hide in your host project, just prefix their names with an underscore (“_”).
To avoid naming conflicts with existing classes in the host database, you need to create a namespace for your component. In the class store, all your classes will be accessible through this namespace:
New options have been added in the Settings window to make it happen. You can define the namespace for your class, and decide if you want to generate the syntax file to enable auto-completion when a developer uses your component:
After generating your component as usual, and putting it in your host database, you can write this type of code to use your class:
var $class : cs.myComponent.Class1 $class:=cs.myComponent.Class1.new()
Completions and tips
When compiled, you can choose to activate the completion and the prototype displaying in the host base by setting the Generate syntax file for code completion option.
If the option is selected, you can use your component’s classes and methods with:
- And prototype at the bottom of the code editor windows: