Evento campo vista

image.png

Ninext aggiunge degli eventi alle viste di Ninox: il clic su una riga di un campo vista (onclick) e la selezione di un record nella vista di una tabella (onselected). Nelle vostre formule, queste funzioni si scrivono esattamente così, in minuscolo.

Questi eventi si disattivano nelle Impostazioni Ninext, sezione «Miglioramenti interfaccia»: Eventi vista (onClick, onSelect) (attivato per impostazione predefinita).

Clic su una riga di un campo vista: onclick

Panoramica rapida delle proprietà JSON passate a onclick

ProprietàDescrizioneEsempio / Uso
previousIDL'ID del record selezionato nella vista prima del clic; vuoto se non ce n'era uno.«A1»
targetIDL'ID del record interessato dal clic.«A3»
targetLineNumIl numero della riga su cui l'utente ha fatto clic (a partire da zero).3
targetColumnNumIl numero della colonna su cui si è fatto clic nella vista (a partire da zero).4
targetColumnValueIl valore di testo visualizzato nella cella su cui si è fatto clic.«Lisa»
targetColumnCaptionL'intestazione della colonna presa dalla configurazione del campo (tramite "caption" oppure "field.caption").«First Name»

Svolgimento generale

  1. Definire la funzione onclick nella formula del campo vista
    La funzione onclick deve essere integrata nella formula del campo vista. Riceve un oggetto (chiamato "event") che contiene le proprietà descritte sopra. In questa funzione, this designa il record che porta il campo vista, e non la riga cliccata: quest'ultima si ritrova con event.targetID.
  2. Eseguire codice personalizzato
    Quando un utente fa clic o tocca una cella della vista, l'hook di Ninext esegue la funzione onclick. Lo script può allora, per esempio:
    • Aggiornare le proprietà di un record (per esempio invertire un campo booleano).
    • Memorizzare l'ID del record cliccato in un campo dedicato.
    • Attivare azioni condizionali in base alla colonna su cui si è fatto clic.
  3. Restituire il contenuto della vista
    Alla fine della funzione, la formula deve restituire il contenuto della vista (per esempio "select Customer"). È così che Ninox sa quali record mostrare dopo l'esecuzione dello script.

Esempi di implementazione

Esempio completo

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

Commenti:

  • La funzione comincia memorizzando l'ID del record cliccato nel campo "ID of selected customer".
  • Recupera poi il record corrispondente nella tabella "Customer".
  • Se l'intestazione della colonna cliccata contiene "checked", inverte il campo "Checked" di quel record e restituisce true per segnalare che il clic è stato gestito.
  • Altrimenti la funzione restituisce true o false a seconda che il numero della colonna cliccata sia 0 oppure no.
  • Infine la formula restituisce "select Customer", che mostra il contenuto della vista dopo l'esecuzione dello script.

Esempio minimo

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

Commenti:

  • Questo script si limita a memorizzare l'ID del record cliccato e a registrare un messaggio di debug.
  • Restituendo false si lascia proseguire il comportamento predefinito per le azioni non gestite espressamente.
  • Come sempre, la formula termina con "select Customer" per mostrare il contenuto della vista.

Punti chiave da ricordare

  • Collocazione nella formula del campo vista:
    la funzione onclick deve essere definita direttamente nella formula del campo vista, non in un trigger o in un'altra parte dell'applicazione.
  • Restituzione del contenuto della vista:
    a differenza di altre funzioni che si aspettano un booleano, l'ultima riga della formula deve restituire il contenuto della vista (per esempio "select Customer").
  • Valore restituito da onclick:
    true segnala che il clic è gestito: Ninox non apre il record cliccato. false, o nessun valore, lascia che Ninox applichi il suo comportamento abituale e apra il record. Un clic su una riga di raggruppamento non chiama onclick.
  • Una funzione valutata a parte:
    Ninext estrae la sola funzione onclick dalla formula, poi la valuta a parte. Non vede quindi né le variabili né le altre funzioni dichiarate altrove nella formula: dichiarate all'interno di onclick tutto ciò di cui ha bisogno.
  • Uso dei parametri dell'evento:
    usate le informazioni fornite nell'oggetto "event" (previousID, targetID, targetLineNum, targetColumnNum, targetColumnValue, targetColumnCaption) per adattare le vostre azioni al contesto del clic.
  • Prove su dispositivi diversi:
    assicuratevi che la funzione si comporti correttamente sia su computer sia su dispositivi touch, poiché l'hook gestisce sia gli eventi "click" sia gli eventi "touchend".

Selezione di un record nella vista di una tabella: onselected

Ninext chiama una funzione onselected() ogni volta che una riga viene selezionata nella vista di una tabella (l'elenco dei record della tabella). Dichiaratela, senza parametri, nella formula del diritto di lettura della tabella («Readable if»). In questa funzione, this designa il record selezionato. Il valore che restituisce non viene usato, e Ninox apre il record come di consueto.

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

Qui, ogni selezione scrive nel Tracciatore debug, a pannello Ninext aperto, una riga che riassume il record scelto.

La formula mantiene il suo ruolo: è il suo ultimo valore che Ninox usa per decidere chi può leggere la tabella. Terminatela quindi con la vostra consueta condizione di lettura; true, come qui, non cambia nulla al diritto di lettura di una tabella aperta a tutti. Come onclick, la funzione viene estratta da sola dalla formula.