Événement de champ vue

Ninext ajoute des événements aux vues de Ninox : le clic sur une ligne d'un champ vue (onclick) et la sélection d'une fiche dans la vue d'une table (onselected). Dans vos formules, ces fonctions s'écrivent exactement ainsi, en minuscules.
Ces événements se désactivent dans les Paramètres Ninext, section « Améliorations de l'interface » : Événements de vue (onClick, onSelect) (activé par défaut).
Clic sur une ligne d'un champ vue : onclick
Aperçu rapide des propriétés JSON transmises à onclick
| Propriété | Description | Exemple / usage |
|---|---|---|
| previousID | L'identifiant de l'enregistrement sélectionné dans la vue avant le clic ; vide s'il n'y en avait pas. | “A1” |
| targetID | L'identifiant de l'enregistrement visé par le clic. | “A3” |
| targetLineNum | Le numéro de la ligne sur laquelle l'utilisateur a cliqué (à partir de zéro). | 3 |
| targetColumnNum | Le numéro de la colonne cliquée dans la vue (à partir de zéro). | 4 |
| targetColumnValue | La valeur textuelle affichée dans la cellule cliquée. | “Lisa” |
| targetColumnCaption | Le libellé de la colonne, issu de la configuration du champ (via « caption » ou « field.caption »). | “First Name” |
Marche à suivre générale
- Définir la fonction onclick dans la formule du champ vue
La fonction onclick doit être intégrée à la formule du champ vue. Elle reçoit un objet (nommé « event ») qui contient les propriétés décrites ci-dessus. Dans cette fonction,thisdésigne l'enregistrement qui porte le champ vue, et non la ligne cliquée : celle-ci se retrouve parevent.targetID. - Exécuter du code personnalisé
Lorsqu'un utilisateur clique ou appuie sur une cellule de la vue, le point d'accroche de Ninext exécute la fonction onclick. Le script peut alors, par exemple :- Mettre à jour les propriétés d'un enregistrement (basculer un champ booléen, par exemple).
- Stocker l'identifiant de l'enregistrement cliqué dans un champ dédié.
- Déclencher des actions conditionnelles selon la colonne cliquée.
- Renvoyer le contenu de la vue
À la fin de la fonction, la formule doit renvoyer le contenu de la vue (par exemple « select Customer »). C'est ce qui indique à Ninox quels enregistrements afficher après l'exécution du script.
Exemples de mise en œuvre
Exemple complet
function onclick(event : any) do
'ID of selected customer' := event.targetID;
var selCustomer := first(select Customer where Id = event.targetID);
debug("onclick");
if event.targetColumnCaption like "checked" then
selCustomer.(Checked := not Checked);
true
else
if event.targetColumnNum = 0 then
true
else
false
end
end
end;
select CustomerCommentaires :
- La fonction commence par stocker l'identifiant de l'enregistrement cliqué dans le champ « ID of selected customer ».
- Elle récupère ensuite l'enregistrement correspondant dans la table « Customer ».
- Si le libellé de la colonne cliquée contient « checked », elle bascule le champ « Checked » de cet enregistrement et renvoie true pour signaler que le clic a été traité.
- Sinon, la fonction renvoie true ou false selon que le numéro de la colonne cliquée vaut 0 ou non.
- Enfin, la formule renvoie « select Customer », ce qui affiche le contenu de la vue après l'exécution du script.
Exemple minimal
function onclick(event : any) do
'ID of selected customer' := event.targetID;
debug("Clicked on Customer " + event.targetID);
"No specific action is performed here.";
false
end;
select CustomerCommentaires :
- Ce script se contente de stocker l'identifiant de l'enregistrement cliqué et d'écrire un message de débogage.
- En renvoyant false, on laisse le comportement par défaut s'appliquer aux actions qui ne sont pas traitées explicitement.
- Comme toujours, la formule se termine par « select Customer » pour afficher le contenu de la vue.
Points essentiels à retenir
- Emplacement dans la formule du champ vue :
La fonction onclick doit être définie directement dans la formule du champ vue, et non dans un déclencheur ou ailleurs dans l'application. - Renvoi du contenu de la vue :
Contrairement à d'autres fonctions qui attendent un booléen, la dernière ligne de la formule doit renvoyer le contenu de la vue (par exemple « select Customer »). - Valeur renvoyée par onclick :
truesignale que le clic est traité : Ninox n'ouvre pas la fiche cliquée.false, ou aucune valeur, laisse Ninox appliquer son comportement habituel et ouvrir la fiche. Un clic sur une ligne de regroupement n'appelle pas onclick. - Une fonction évaluée à part :
Ninext extrait la seule fonction onclick de la formule, puis l'évalue à part. Elle ne voit donc ni les variables ni les autres fonctions déclarées ailleurs dans la formule : déclarez à l'intérieur d'onclick tout ce dont elle a besoin. - Utilisation des paramètres de l'événement :
Servez-vous des informations fournies par l'objet « event » (previousID, targetID, targetLineNum, targetColumnNum, targetColumnValue, targetColumnCaption) pour adapter vos actions au contexte du clic. - Essais sur différents appareils :
Assurez-vous que la fonction marche aussi bien sur ordinateur que sur appareil tactile, car le point d'accroche traite à la fois les événements « click » et « touchend ».
Sélection d'une fiche dans la vue d'une table : onselected
Ninext appelle une fonction onselected() chaque fois qu'une ligne est sélectionnée dans la vue d'une table (la liste des fiches de la table). Déclarez-la, sans paramètre, dans la formule du droit de lecture de la table (« Readable if »). Dans cette fonction, this désigne la fiche sélectionnée. La valeur qu'elle renvoie n'est pas utilisée, et Ninox ouvre la fiche comme d'ordinaire.
function onselected() do
debug("customer->onselect : " + this)
end;
trueIci, chaque sélection écrit dans le Traceur de débogage, panneau Ninext ouvert, une ligne qui résume la fiche choisie.
La formule garde son rôle : c'est sa dernière valeur que Ninox utilise pour décider qui peut lire la table. Terminez-la donc par votre condition de lecture habituelle ; true, comme ici, ne change rien au droit de lecture d'une table ouverte à tous. Comme onclick, la fonction est extraite seule de la formule.
