Managing Methods and Classes
Le code 4D utilisé dans votre projet est écrit dans des méthodes et des classes.
L'IDE de 4D vous offre diverses fonctionnalités pour créer, modifier, exporter ou supprimer votre code. Vous utiliserez généralement l'éditeur intégré de code 4D pour travailler avec votre code. Vous pouvez également utiliser d'autres éditeurs tels que VS Code, pour lesquels l'extension 4D-Analyzer est disponible.
Créer des méthodes
Une méthode dans 4D est stockée dans un fichier .4dm situé dans le dossier approprié du dossier /Project/Sources/.
Vous pouvez créer plusieurs types de méthodes :
- Tous les types de méthodes peuvent être créés ou ouverts à partir de la fenêtre de l'Explorateur (à l'exception des méthodes objet qui sont gérées à partir de l'éditeur de formulaires).
- Les méthodes projet peuvent également être créées ou ouvertes à partir du menu Fichier ou de la barre d'outils (Nouveau/Méthode... ou Ouvrir/Méthode...) ou à l'aide de raccourcis dans la fenêtre de l'éditeur de code.
- Triggers can also be created or opened from the Structure editor.
- Les méthodes formulaire peuvent également être créées ou ouvertes à partir de l'éditeur de formulaires.
Créer des classes
User classes
Une classe utilisateur dans 4D est définie par un fichier de méthode spécifique (.4dm), stocké dans le dossier /Project/Sources/Classes/. Le nom du fichier est le nom de la classe. For example, a class named "Polygon" will be stored in the following file:
Project folder Project Sources Classes Polygon.4dm
You can create a class file from the File menu or toolbar (New > Class...) or in the Methods page of the Explorer window. Vous pouvez également utiliser le raccourci Ctrl+Maj+Alt+k.
Dans la page Méthodes de l'Explorateur, les classes sont regroupées dans la catégorie Classes.
Pour créer une nouvelle classe, vous pouvez :
- sélectionner la catégorie Classes et cliquez sur le bouton
.
- sélectionner Nouvelle classe... dans le menu d'actions en bas de la fenêtre de l'Explorateur ou dans le menu contextuel du groupe Classes.
- sélectionnez Nouveau> Classe... dans le menu contextuel de la page d'accueil de l'Explorateur.
Lorsque vous nommez des classes, gardez à l'esprit les règles suivantes :
- A class name must be compliant with property naming rules.
- Les noms de classe sont sensibles à la casse.
- Il n'est pas recommandé de donner le même nom à une classe et à une table de base de données, afin d'éviter tout conflit.
ORDA classes
ORDA data model user classes are high-level class functions created above the data model.
An ORDA data model class is defined by adding, at the same location as regular class files (i.e. in the /Sources/Classes folder of the project folder), a .4dm file with the name of the class. Par exemple, une classe d'entité pour la dataclass Utilities sera définie via un fichier UtilitiesEntity.4dm.
4D crée préalablement et automatiquement des classes vides en mémoire pour chaque objet de modèle de données disponible.

Par défaut, les classes ORDA vides ne sont pas affichées dans l'Explorateur. Pour les afficher, vous devez sélectionner Afficher toutes les dataclasses dans le menu d'options de l'Explorateur :
Les classes utilisateurs ORDA ont une icône différente des autres classes. Les classes vides sont grisées :

Pour créer un fichier de classe ORDA, il vous suffit de double-cliquer sur la classe prédéfinie correspondante dans l'Explorateur. 4D creates the class file and add the extends code. Par exemple, pour une classe Entity :
Class extends Entity
Une fois qu'une classe est définie, son nom n'est plus grisé dans l'Explorateur.
Pour ouvrir une classe ORDA définie dans l'éditeur de code de 4D, sélectionnez ou double-cliquez sur un nom de classe ORDA et utilisez Edit... depuis le menu contextuel/options de la fenêtre de l'Explorateur:
Pour les classes ORDA basées sur le datastore local (ds), vous pouvez accéder directement au code de la classe depuis la fenêtre de structure de 4D :

Prise en charge dans l'IDE 4D
Dans les différentes fenêtres 4D (éditeur de code, compilateur, débogueur, explorateur d'exécution), le code de classe est essentiellement géré comme une méthode projet avec quelques spécificités :
- Dans l'éditeur de code :
- une classe ne peut pas être exécutée
- une fonction de classe est un bloc de code
- Aller à définition... sur un objet membre permet de rechercher des déclarations de fonction de classe; par exemple, "$o.f()" donnera comme résultat de recherche "Function f".
- Chercher les références... sur la déclaration de fonction de classe recherche la fonction utilisée comme membre d'objet; par exemple, "Function f" donnera comme résultat "$o.f()".
- variables typed as a user or ORDA class automatically benefit from autocompletion features. Exemple avec une variable de classe Entity :

- Dans l'explorateur d'exécution et le débogueur, les fonctions de classe sont affichées avec le constructeur
<ClassName>ou le format<ClassName>.<FunctionName>.
Supprimer des méthodes ou des classes
Pour supprimer une méthode ou une classe existante, vous pouvez :
- sur votre disque, supprimer le fichier .4dm du dossier "Sources",
- dans l'explorateur de 4D, sélectionnez la méthode ou la classe et cliquez sur
ou choisissez Déplacer vers la corbeille dans le menu contextuel.
Pour supprimer une méthode objet, choisissez Supprimer la méthode objet dans l'éditeur de formulaires (menu Objet ou menu contextuel).
Design Object Access commands
You can access the contents and paths of all methods in your applications by programming, thanks to the "Design Object Access" command theme. This source toolkit facilitates the integration into your applications of code control tools and more particularly version control systems (VCS). It also lets you implement advanced systems for code documentation, for building a custom explorer or for organizing scheduled backups of the code saved as disk files.
The following principles are implemented:
- Each method and form in a 4D application has its own address in the form of a pathname. For example, the trigger method for table 1 can be found at "[trigger]/table_1". Each object pathname is unique in an application.
- You can access objects in the 4D application using the commands of the "Design Object Access" command theme, for example
METHOD GET NAMESorMETHOD GET PATHS. - Most of the commands in this theme work in both interpreted and compiled mode. However, commands that modify properties or access contents executable from methods can only be used in interpreted mode (see the table below).
- You can use all the commands of this theme with 4D in local or remote mode. However, keep in mind that you cannot use certain commands in compiled mode: the purpose of this theme is to create custom development support tools. You must not use these commands to dynamically change the functioning of a database that is running. For example, you cannot use
METHOD SET ATTRIBUTEto change a method attribute according to the status of the current user. - When a command of this theme is called from a component, by default it accesses the component objects. In this case, to access objects of the host, you just pass a
*as the last parameter.
Use in compiled mode
For reasons related to the principle of the compilation process, only certain commands in this theme can be used in compiled mode. The following table indicates the available of the commands in compiled mode:
| Command | Can be used in compiled mode |
|---|---|
| Current method path | Oui |
| FORM GET NAMES | Oui |
| METHOD Get attribute | Oui |
| METHOD GET ATTRIBUTES | Oui |
| METHOD GET CODE | Non |
| METHOD GET COMMENTS | Oui |
| METHOD GET FOLDERS | Oui |
| METHOD GET MODIFICATION DATE | Oui |
| METHOD GET NAMES | Oui |
| METHOD Get path | Oui |
| METHOD GET PATHS | Oui |
| METHOD GET PATHS FORM | Oui |
| METHOD OPEN PATH | Non |
| METHOD RESOLVE PATH | Oui |
| METHOD SET ACCESS MODE | Oui |
| METHOD SET ATTRIBUTE | Non |
| METHOD SET ATTRIBUTES | Non |
| METHOD SET CODE | Non |
| METHOD SET COMMENTS | Non |
The error -9762 "The command cannot be executed in a compiled database." is generated when the command is executed in compiled mode.
Creation of pathnames
Pathnames generated for 4D objects must be compatible with the file management of the operating system. Characters that are forbidden at the OS level such as ":" are automatically encoded in method names, so that generated files may be integrated automatically in a version control system.
Here are the encoded characters:
| Caractère | Encoding |
|---|---|
| " | %22 |
| * | %2A |
| / | %2F |
| : | %3A |
| < | %3C |
| > | %3E |
| ? | %3F |
| \ | |
| \ | %5C |
| % | %25 |
Exemples
Form?1 is encoded Form%3F1
Button/1 is encoded Button%2F1