Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
97fa6b6
21.2 lts update
arnaud4d Aug 31, 2026
5145372
New Crowdin updates (#3397)
arnaud4d Sep 1, 2026
86055f7
Merge branch '4d:main' into main
arnaud4d Sep 1, 2026
85eb3bb
fixed table for set rgb color
arnaud4d Sep 1, 2026
8d01b63
Feature/winui list form (#3398)
arnaud4d Sep 1, 2026
bc49d7e
Fixing ES issues in OB commands (#3399)
sandritica Sep 2, 2026
e8c3fe4
New Crowdin updates (#3400)
arnaud4d Sep 2, 2026
1bed550
Update selection-to-array.md (#3401)
nobuteshima Sep 2, 2026
bf4059c
Update use-character-set.md (#3402)
nobuteshima Sep 2, 2026
470216f
Update encrypt-data-file.md (#3403)
nobuteshima Sep 2, 2026
640f17c
Update form-get-objects.md (#3405)
nobuteshima Sep 2, 2026
f2117fd
Update graph.md (#3406)
nobuteshima Sep 2, 2026
14af7a4
fixes and updates css, licenses
arnaud4d Sep 2, 2026
0b926e7
fix again licenses
arnaud4d Sep 3, 2026
b1706b8
New Crowdin updates (#3404)
arnaud4d Sep 3, 2026
0623e50
Update get-list-item-font.md (#3407)
nobuteshima Sep 3, 2026
6a4e5a9
Update get-list-item-icon.md (#3408)
nobuteshima Sep 3, 2026
3dd412c
fixed license all lang
arnaud4d Sep 3, 2026
c1b6a78
detail area support
arnaud4d Sep 3, 2026
bc6392f
Update get-list-item-parameter-arrays.md (#3409)
nobuteshima Sep 4, 2026
ba6dec2
Update get-list-item-parameter.md (#3410)
nobuteshima Sep 4, 2026
4176133
Update get-list-item-properties.md (#3411)
nobuteshima Sep 4, 2026
4e6f7bc
Update get-list-item.md (#3412)
nobuteshima Sep 4, 2026
46a5119
Update insert-in-list.md (#3413)
nobuteshima Sep 4, 2026
cad7d67
Update list-item-parent.md (#3414)
nobuteshima Sep 4, 2026
7d728ef
fix buildappsettings
arnaud4d Sep 4, 2026
9f92e3c
fix suite
arnaud4d Sep 4, 2026
cd31fd3
New Crowdin updates (#3415)
arnaud4d Sep 7, 2026
dcd85fc
fixes from Keisuke's IA
arnaud4d Sep 7, 2026
866f5c9
Merge branch '4d:main' into main
arnaud4d Sep 7, 2026
1697a72
New Crowdin updates (#3416)
arnaud4d Sep 7, 2026
310ae36
New Crowdin updates (#3417)
arnaud4d Sep 9, 2026
e81fc06
update interface
arnaud4d Sep 9, 2026
34bf958
fixed sax and defer
arnaud4d Sep 9, 2026
d7f90a5
New Crowdin updates (#3418)
arnaud4d Sep 10, 2026
e844550
Feature/4d corner (#3423)
arnaud4d Sep 10, 2026
7a004ed
Update set-list-item-font.md (#3419)
nobuteshima Sep 11, 2026
e25e685
Update set-list-item-icon.md (#3420)
nobuteshima Sep 11, 2026
4572cda
Update set-list-item-parameter.md (#3421)
nobuteshima Sep 11, 2026
d2bcdff
New Crowdin updates (#3422)
arnaud4d Sep 11, 2026
6e1ce5d
Update components.md
arnaud4d Sep 11, 2026
a244c6b
Merge branch '4d:main' into main
arnaud4d Sep 11, 2026
feb6787
Feature/compile from host (#3424)
arnaud4d Sep 11, 2026
0307fdd
Update SMTPTransporterClass.md
arnaud4d Sep 11, 2026
036cf6b
New Crowdin updates (#3425)
arnaud4d Sep 14, 2026
a665134
current.json French (#3426)
arnaud4d Sep 14, 2026
a0fb7a5
New Crowdin updates (#3427)
arnaud4d Sep 15, 2026
d09a125
Update data-collect.md (#3428)
arnaud4d Sep 15, 2026
9ec9c21
New Crowdin updates (#3429)
arnaud4d Sep 16, 2026
2549068
Update security.md
arnaud4d Sep 16, 2026
3770278
fix split string
arnaud4d Sep 17, 2026
1b44991
New Crowdin updates (#3430)
arnaud4d Sep 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 0 additions & 17 deletions docs/API/SMTPTransporterClass.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,23 +159,6 @@ The `.certificatePassword` property contains <!-- REF #SMTPTransporterClass.cert
[.certificateName](#certificatename)


<!-- INCLUDE transporter.logFile.Desc -->

<!-- INCLUDE transporter.port.Desc -->

## .send()

<details><summary>History</summary>

|Release|Changes|
|---|---|
|17 R5|Support of mime contents|
|17 R4|Added|

</details>




<!-- INCLUDE transporter.checkConnection().Desc -->

Expand Down
5 changes: 5 additions & 0 deletions docs/Admin/data-collect.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,12 @@ Some data is also collected at regular intervals.
|cacheReadCount|Object|Number of reads in the cache |
|classUsage|Object|Number of instances of certain language classes|
|connectionSystems|Collection|Client OS without the build number (in parenthesis) and number of clients using it|
|databases[].backupSettings|Object|Current backup settings values|
|databases[].cacheSize|Number|Cache size in bytes|
|databases[].compatibilitySettings|Object|Enabled Compatibility settings|
|databases[].externalDatastoreOpened|Number|Number of calls to `Open datastore`|
|databases[].fluentUI|Boolean|True if Use Fluent UI on Windows setting is checked|
|databases[].flushCacheInterval|Number|Defined time period between each automatic saving of the data cache|
|databases[].id|Number|Database ID|
|databases[].internalDatastoreOpened|Number|Number of times the datastore is opened by an external server|
|databases[].maxConcurrent4DClients|Number|Maximum number of simultaneous 4D Client sessions (using a 4D Client license) over the collection interval |
Expand All @@ -54,6 +56,7 @@ Some data is also collected at regular intervals.
|databases[].numberOfKeepRecordSyncInfo|Number|Number of tables with the "Enable Replication" option checked|
|databases[].numberOfRecordsMax|Number|Total number of records|
|databases[].numberOfTables|Number|Number of tables|
|databases[].numberOfUncaughtExecutionErrors|Number|Number of times an execution error is displayed as an alert|
|databases[].qodly.webforms|Number|Number of Qodly webforms|
|databases[].remoteDebugger4DRemoteAttachments|Number|Number of attachments to the remote debugger from a remote 4D|
|databases[].remoteDebuggerQodlyAttachments|Number|Number of attachments to the remote debugger from Qodly|
Expand Down Expand Up @@ -94,6 +97,7 @@ Some data is also collected at regular intervals.
|isEncrypted|Boolean|True if the data file is encrypted|
|isEngined|Boolean|True if the application is merged with 4D Volume Desktop|
|isProjectMode|Boolean|True if the application is a project|
|isShadowCopyActivated|Boolean|True if the Volume Shadow Copy feature is enabled (Windows only|
|LDAPLogin|Number|Number of calls to `LDAP LOGIN`|
|license.sffPrimaryKey|Number|Server master product number|
|machine.CPU|Text|Name, type, and speed of the processor|
Expand All @@ -104,6 +108,7 @@ Some data is also collected at regular intervals.
|maximumUsedPhysicalMemory|Number|Maximum use of physical memory|
|maximumUsedVirtualMemory|Number|Maximum use of virtual memory|
|mobile|Collection|Information on mobile sessions|
|numberOfCrashes|Number|Number of times 4D has crashed|
|numberOfWebServices|Number|Number of methods published as Web Services|
|ODBCLogin|Number|Number of calls to `SQL LOGIN` using ODBC|
|phpCall|Number|Number of calls to `PHP execute` |
Expand Down
31 changes: 24 additions & 7 deletions docs/Extensions/develop-components.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ You can develop 4D components for your own needs and keep them private. You can

:::note

You can [create a component directly from the host](#creating-components) project without needing to go through a separate matrix project
You can [create a component directly from the host](#creating-components) project without needing to go through a separate matrix project.

:::

Expand All @@ -35,13 +35,13 @@ Creating and installing 4D components is carried out directly from 4D:

:::note

Interpreted component code can be [edited directly from the host project](#editing-components) if the context is supported.
Interpreted component code can be [edited](#editing-components) and [compiled](../Project/compiler.md#compile-components) directly from the host project if the context is supported.

:::

## Creating and editing components from the host

In interpreted mode, the 4D IDE allows you to create and edit components directly from the host project. It facilitates component development and tuning in the actual context of a host project without having to leave or restart it.
In interpreted mode, the 4D IDE allows you to create, edit, and compile components directly from the host project. It facilitates component development and tuning in the actual context of a host project without having to leave or restart it.

### Creating components

Expand All @@ -55,9 +55,10 @@ This action opens a folder selection dialog where you choose where [the componen
* If you decide to store the component **next to the project package**, 4D adds it to the [`dependencies.json`](../Project/components.md#dependenciesjson) file.
* If you decide to store the component **elsewhere**, 4D adds it to the [`dependencies.json`](../Project/components.md#dependenciesjson) file and its path is added to the [`environment4d.json`](../Project/components.md#environment4djson) file, using either a [relative or an absolute path](../Project/components.md#relative-paths-vs-absolute-paths). A relative path is used if the component is located within no more than two levels above as the `environment4d.json` file, or in its subfolders. Otherwise, an absolute path is used.

:::note
:::note Notes

You cannot store a component **in the project package** but **outside the Components folder**.
- You cannot store a component **in the project package** but **outside the Components folder**.
- When a component is created from the host, it is assigned a [default namespace](#default-namespace).

:::

Expand All @@ -80,7 +81,7 @@ In this context, you can open, edit, and save your component code in the Code ed

[Exposed component classes](#sharing-of-classes) and [shared methods](#sharing-of-project-methods) of your component can be edited from the **Component Methods** tab of the Explorer.

A specific icon indicates that the component contains shared code):<br/>
A specific icon indicates that the component contains shared code:<br/>
![](../assets/en/Develop/editable-component.png)

Select **Edit...** to open your component code in the Code editor. You can edit and save it.
Expand Down Expand Up @@ -116,6 +117,11 @@ Standard 4D IDE features are available for the component. You can execute the fo
- run methods,
- restore from trash or empty trash.

### Compiling components

You can compile a component [directly from the host project](../Project/compiler.md#compile-components) without having to open it separately, provided it is compliant with the [requirements](../Project/compiler.md#requirements).



### Search and replace

Expand Down Expand Up @@ -206,7 +212,7 @@ By default, component classes cannot be called from the 4D Code Editor of the ho

### Declaring the component namespace

To allow classes of your component to be exposed in the host projects and their loaded components, enter a value in the [**Component namespace in the class store** option in the General page](../settings/general.md#component-namespace-in-the-class-store) of the matrix project Settings. By default, the area is empty: component classes are not available outside of the component context.
To allow classes of your component to be exposed in the host projects and their loaded components, enter a value in the [**Component namespace in the class store** option in the General page](../settings/general.md#component-namespace-in-the-class-store) of the matrix project Settings. By default, the area is empty (except when the component is [created from the host](#default-namespace)): component classes are not available outside of the component context.

![](../assets/en/settings/namespace.png)

Expand Down Expand Up @@ -237,6 +243,15 @@ Of course, it is recommended to use a distinguished name to avoid any conflict.

A component's ORDA classes are not available in its host project. For example, if there is a dataclass called Employees in your component, you will not be able to use a "cs.Mycomponent.Employee" class in the host project.

#### Default namespace

When a new component is [created from the host](#creating-components), a default namespace is automatically assigned to the component.

The default namespace is the component's name, without characters that do not comply with [property naming rules](../Concepts/identifiers.md#object-properties), if any. For example, for a component named "My Component-2", the default namespace will be "MyComponent2".




### Hidden classes

Just like in any project, you can create hidden classes and functions in the component by prefixing names with an underscore ("_"). When a [component namespace is defined](#declaring-the-component-namespace), hidden classes and functions of the component will not appear as suggestions when using code completion.
Expand All @@ -250,6 +265,8 @@ $rect:=cs.eGeometry._Rectangle.new(10;20)
> Non-hidden functions inside a hidden class appear as suggestions when you use code completion with a class that [inherits](../Concepts/classes.md#inheritance) from it. For example, if a component has a `Teacher` class that inherits from a `_Person` class, code completion for `Teacher` suggests non-hidden functions from `_Person`.




## Code completion for compiled components

To make your component easier to use for developers, you can check the [**Generate syntax file for code completion when compiled** option in the General page](../settings/general.md#component-namespace-in-the-class-store) of the matrix project Settings.
Expand Down
1 change: 1 addition & 0 deletions docs/Notes/updates.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ Read [**What’s new in 4D 21 R5**](https://blog.4d.com/whats-new-in-4d-21-r5/),
#### Highlights

- Support of S/MIME email signing through new [`4D.SMTPTransporter`](../API/SMTPTransporterClass.md) class properties: [`.certificate`](../API/SMTPTransporterClass.md#certificate) or [`.certificateName`](../API/SMTPTransporterClass.md#certificatename) (certificate providing), and [`.certificatePassword`](../API/SMTPTransporterClass.md#certificatepassword).
- You can now [compile a component directly from the host](../Project/compiler.md#compile-components).
- Support of list forms in [**fluent UI** rendering](../FormEditor/forms.md#fluent-ui-rendering) on Windows.
- Direct access to the [4D Corner platform](https://corner.4d.com/) from the [Dependency manager](../Project/components.md#using-4d-corner).
- [**Fixed bug list**](https://bugs.4d.fr/fixedbugslist?version=21_R5): list of all bugs that have been fixed in 4D 21 R5.
Expand Down
65 changes: 64 additions & 1 deletion docs/Project/compiler.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,70 @@ Use the **Previous Error** / **Next Error** commands of the **Method** menu to n

The number of errors found during your first compilations may be daunting, but do not let this put you off. You will soon discover that they often spring from the same source, i.e., non-compliance with certain project conventions. The compiler always provides a [precise diagnosis](#error-file) of the errors in order to help you correct them.

> Compilation requires an appropriate license. Without this license, it is not possible to carry out a compilation (buttons are disabled). Nevertheless, it is still possible to check the syntax and generate Typing methods.
:::note

Compilation requires an [appropriate license](../Admin/licenses.md). Without this license, it is not possible to carry out a compilation (buttons are disabled). Nevertheless, it is still possible to check the syntax and generate Typing methods.

:::

### Compile components

<details><summary>History</summary>

|Release|Changes|
|---|---|
|21 R5|Added|

</details>

While developing your application, you can compile the components used by the host project directly from the host project, without having to open them separately. When the host project contains one or more *eligible* components (see [Requirements](#requirements) below), an additional menu is displayed in the Compiler window. This menu lets you select which project(s) you want to compile:

- the host project only (default)
- the host project and all its eligible components
- a single eligible component among the list of all eligible components.

![](../assets/en/Project/compile-component.png)

:::note

You can open the Compiler window from the **Methods>Component Methods** section of the Explorer: right-click on an eligible component name and select **Compiler...** from the contextuel menu.

:::

A list of components being compiled is displayed in the Compiler window. If an error is detected in a component, its compilation is stopped but the process continues for other components.

- Components with at least one error can be unfolded to display the list of errors and appear **in bold**.
- Components with at least one warning can be unfolded to display the list of warnings.
- Components wihout errors cannot be unfolded.




#### Requirements

To be eligible for compilation from the host project, a component must comply with the following requirements:

- the component uses the [project architecture](../Project/architecture.md),
- the component's [interpreted code](../Concepts/interpreted.md) is available and the component is not [running in compiled mode](#run-compiled),
- the component uses [direct typing](#enabling-direct-typing) declarations.

:::note

The additional menu is not displayed if the project does not contain any eligible component.

:::

#### Compiler features & Settings

All available features of the Compiler window are applied to the selected component(s): **Compile**, **Check syntax**, **Clear compiled code**.

The [Settings](../settings/) cannot be edited when a component is selected (the button is dimmed).

Each component's [settings](../settings/) are applied for the compilation, except the [error file and symbol file generation options](#compilation-options): settings of the host project override the component's options. When enabled, [error and warning file](#error-file) as well as [symbol file](#symbol-file) of each component are stored in the [**Logs** folder of the host project](../Project/architecture.md#logs), within a dedicated folder (the name of the folder is the component name).

When you start a compilation or a syntax check, every processed project is listed in the compiler window. If errors or warnings are detected, they are displayed in hierarchical lists beneath the corresponding project. Projects that contain errors are displayed in **bold**:

![](../assets/en/Project/compile-components-errors.png)

## Run Compiled

Expand Down
4 changes: 2 additions & 2 deletions docs/Project/components.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ title: Dependencies



The 4D [project architecture](../Project/architecture.md) is modular. You can provide additional functionalities to your 4D projects by installing [**components**](Concepts/components.md) and [**plug-ins**](../Concepts/plug-ins.md). Components are made of 4D code, while plug-ins can be [built using any language](../Extensions/develop-plug-ins.md).
The 4D [project architecture](../Project/architecture.md) is modular. You can provide additional functionalities to your 4D projects by installing [**components**](../Concepts/components.md) and [**plug-ins**](../Concepts/plug-ins.md). Components are made of 4D code, while plug-ins can be [built using any language](../Extensions/develop-plug-ins.md).

You can [develop](../Extensions/develop-components.md) and [build](../Desktop/building.md) your own 4D components, or download public components proposed by 4D or the 4D community on the [**4D Corner platform**](https://corner.4d.com/).

Expand All @@ -16,7 +16,7 @@ Once installed in your 4D environment, extensions are handled as **dependencies*

## Interpreted and compiled components

Components can be interpreted or [compiled](../Desktop/building.md).
Components can be interpreted or [compiled](./compiler.md#compile-components).

- A 4D project running in interpreted mode can use either interpreted or compiled components.
- A 4D project running in compiled mode cannot use interpreted components. In this case, only compiled components can be used.
Expand Down
Binary file modified docs/assets/en/Develop/editable-component.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/en/Project/compile-component.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions docs/language-legacy/String/split-string.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ The *separator* parameter can be a multiple-character string:
```4d
 var $vt : Text
 var $col : Collection
 $vt:="NameSmithage40"
 $col:=Split string($vt;"")
 $vt:="Name<tab>Smith<tab>age<tab>40"
 $col:=Split string($vt;"<tab>")
  //$col=["Name","Smith","age","40"]
```

Expand Down
Loading
Loading