L’utilisation des formules dans les collections et les commandes de rappel

Traduit automatiquement de Deepl

Lorsque vous utilisez des collections avec une méthode membre qui nécessite une méthode de rappel, vous avez été nombreux à nous demander une méthode plus simple.

Vous avez demandé, nous avons répondu !

A partir de 4D v19 R6, 4D vous permet d’utiliser une formule pour définir un callback dans les fonctions membres d’une collection, les fonctions EXECUTE METHOD IN SUBFORM, CALL FORM, et CALL WORKER et les commandes. Si vous pouvez réduire votre code à une simple expression, vous pouvez le passer directement dans la formule sans utiliser de méthode.

Formule HDI dans les commandes

formule dans COLLECTIoN

Vous pouvez maintenant utiliser une formule comme callback dans les méthodes des membres : .every(), .filter(), .find(), .findIndex(), .map(), .orderByMethod(), .reduce(), .some(), .sort()

Par exemple, si vous voulez filtrer la collection pour trouver tous les membres supérieurs à 0, vous pouvez le faire sur une seule ligne :

$result:=$c.filter(Formula($1.value>0))

Comme vous pouvez le voir ci-dessus, pour être plus simple et plus lisible, nous rendons le $1.result facultatif dans les formules.

Bien sûr, vous pouvez toujours utiliser le code :

$c:=New collection
$c.push(1;-5; -3; -1;3; -4; -6; -2;10)
$result:=$c.filter("NumberGreaterThan0")

mais vous pouvez aussi utiliser la formule pour faire référence à une méthode et ainsi bénéficier de la complétion de code pour trouver le nom de votre méthode, et profiter du renommage automatique si vous changez le nom de votre méthode :

$c:=New collection
$c.push(1;-5; -3; -1;3; -4; -6; -2;10)
$result:=$c.filter(Formula(NumberGreaterThan0))

avec la méthode NumberGreaterThan0:

#DECLARE ($param:Object)
$param.result:=$param.value>0

formule dans les commandes

Vous pouvez utiliser une formule pour définir un callback dans les méthodes membres . EXECUTE METHOD IN SUBFORM, CALL FORM, et CALL WORKER commandes.

Comme pour les collections, vous pouvez utiliser des expressions sans avoir à créer une méthode :

// Close the windows in the context of the form
CALL FORM($windows;formula(CANCEL))

ou faire référence à une méthode avec l’une de ces 2 façons :

EXECUTE METHOD IN SUBFORM("Subform"; Formula(UpdateField))

ou

EXECUTE METHOD IN SUBFORM("Subform"; "UpdateField")

Essayez toutes ces nouvelles fonctionnalités avec le HDI ci-dessus, et n’hésitez pas à donner votre avis sur le forum !

Fabrice Mainguené
- Product Owner -Fabrice Mainguené a rejoint l'équipe du programme 4D en novembre 2016. En tant que Product Owner, il est en charge de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation de la fonctionnalité livrée répond au besoin du client.Après avoir obtenu une licence en informatique au CNAM, Fabrice a rejoint une petite société d'édition de logiciels en tant que développeur Windev. Il a ensuite travaillé pour différentes entreprises dans les domaines de l'industrie et du commerce en tant que développeur Windev et web ainsi que conseiller technique sur les nouvelles fonctionnalités.