Esdeveniment de camp de vista

Ninext afegeix esdeveniments a les vistes de Ninox: el clic en una fila d'un camp de vista (onclick) i la selecció d'un registre a la vista d'una taula (onselected). A les vostres fórmules, aquestes funcions s'escriuen exactament així, en minúscules.
Aquests esdeveniments es desactiven a la Configuració de Ninext, secció «Millores d'interfície»: Esdeveniments de vista (onClick, onSelect) (activat per defecte).
Clic en una fila d'un camp de vista: onclick
Visió ràpida de les propietats JSON passades a onclick
| Propietat | Descripció | Exemple / Ús |
|---|---|---|
| previousID | L'ID del registre seleccionat a la vista abans del clic; buit si no n'hi havia cap. | “A1” |
| targetID | L'ID del registre al qual apunta el clic. | “A3” |
| targetLineNum | El número de la fila on ha fet clic l'usuari (començant per zero). | 3 |
| targetColumnNum | El número de la columna on s'ha fet clic dins de la vista (començant per zero). | 4 |
| targetColumnValue | El valor de text que es mostra a la cel·la on s'ha fet clic. | “Lisa” |
| targetColumnCaption | El títol de la columna segons la configuració del camp (fent servir "caption" o bé "field.caption"). | “First Name” |
Funcionament general
- Definiu la funció onclick dins de la fórmula del camp de vista
La funció onclick s'ha d'integrar a la fórmula del camp de vista. Rep un objecte (anomenat "event") que conté les propietats descrites més amunt. En aquesta funció,thisdesigna el registre que porta el camp de vista, i no la fila clicada: aquesta es troba ambevent.targetID. - Execució de codi personalitzat
Quan un usuari fa clic o toca una cel·la de la vista, el ganxo de Ninext executa la funció onclick. Aleshores l'script pot, per exemple:- Actualitzar propietats d'un registre (per exemple, invertir un camp booleà).
- Desar l'ID del registre clicat en un camp determinat.
- Desencadenar accions condicionals segons la columna on s'ha fet clic.
- Retorn del contingut de la vista
Al final de la funció, la fórmula ha de retornar el contingut de la vista (per exemple, "select Customer"). Això indica a Ninox quins registres ha de mostrar un cop executat l'script.
Exemples d'implementació
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 CustomerComentaris:
- La funció comença desant l'ID del registre clicat al camp "ID of selected customer".
- Després recupera el registre corresponent de la taula "Customer".
- Si el títol de la columna de la cel·la clicada conté "checked", inverteix el camp "Checked" d'aquest registre i retorna true per indicar que el clic s'ha tractat.
- Si no, la funció retorna true o false segons si el número de la columna clicada és 0.
- Finalment, la fórmula retorna "select Customer", que mostra el contingut de la vista un cop executat l'script.
Exemple mínim
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 CustomerComentaris:
- Aquest script simplement desa l'ID del registre clicat i escriu un missatge de depuració.
- Retornar false deixa que el comportament per defecte segueixi el seu curs per a les accions que no es tracten específicament.
- Com sempre, la fórmula acaba amb "select Customer" per mostrar el contingut de la vista.
Punts clau que cal recordar
- Ubicació dins de la fórmula del camp de vista:
La funció onclick s'ha de definir directament a la fórmula del camp de vista, no en un activador ni en cap altra part de l'aplicació. - Retorn del contingut de la vista:
A diferència d'altres funcions que esperen un booleà, la darrera línia de la fórmula ha de retornar el contingut de la vista (per exemple, "select Customer"). - Valor retornat per onclick:
trueindica que el clic s'ha tractat: Ninox no obre el registre clicat.false, o cap valor, deixa que Ninox apliqui el seu comportament habitual i obri el registre. Un clic en una fila d'agrupació no crida onclick. - Una funció avaluada a part:
Ninext extreu només la funció onclick de la fórmula i, després, l'avalua a part. Per tant, no veu ni les variables ni les altres funcions declarades en altres llocs de la fórmula: declareu dins d'onclick tot el que necessiti. - Ús dels paràmetres de l'esdeveniment:
Feu servir la informació que ofereix l'objecte "event" (previousID, targetID, targetLineNum, targetColumnNum, targetColumnValue, targetColumnCaption) per adaptar les vostres accions al context del clic. - Proves en dispositius diferents:
Assegureu-vos que la funció funcioni correctament tant en ordinadors de sobretaula com en dispositius tàctils, ja que el ganxo tracta tant els esdeveniments "click" com els "touchend".
Selecció d'un registre a la vista d'una taula: onselected
Ninext crida una funció onselected() cada vegada que se selecciona una fila a la vista d'una taula (la llista de registres de la taula). Declareu-la, sense paràmetres, a la fórmula del dret de lectura de la taula («Readable if»). En aquesta funció, this designa el registre seleccionat. El valor que retorna no s'utilitza, i Ninox obre el registre com de costum.
function onselected() do
debug("customer->onselect : " + this)
end;
trueAquí, cada selecció escriu al Rastrejador de depuració, amb el tauler de Ninext obert, una línia que resumeix el registre triat.
La fórmula conserva la seva funció: és el seu darrer valor el que Ninox fa servir per decidir qui pot llegir la taula. Per tant, acabeu-la amb la vostra condició de lectura habitual; true, com aquí, no canvia res al dret de lectura d'una taula oberta a tothom. Com onclick, la funció s'extreu sola de la fórmula.
