Esdeveniment de camp de vista

imatge.png

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

PropietatDescripcióExemple / Ús
previousIDL'ID del registre seleccionat a la vista abans del clic; buit si no n'hi havia cap.“A1”
targetIDL'ID del registre al qual apunta el clic.“A3”
targetLineNumEl número de la fila on ha fet clic l'usuari (començant per zero).3
targetColumnNumEl número de la columna on s'ha fet clic dins de la vista (començant per zero).4
targetColumnValueEl valor de text que es mostra a la cel·la on s'ha fet clic.“Lisa”
targetColumnCaptionEl títol de la columna segons la configuració del camp (fent servir "caption" o bé "field.caption").“First Name”

Funcionament general

  1. 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ó, this designa el registre que porta el camp de vista, i no la fila clicada: aquesta es troba amb event.targetID.
  2. 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.
  3. 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

Ninox
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 Customer

Comentaris:

  • 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

Ninox
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 Customer

Comentaris:

  • 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:
    true indica 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.

Ninox
function onselected() do
    debug("customer->onselect : " + this)
end;
true

Aquí, 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.