Ereignis im Ansichtsfeld

Ninext ergänzt die Ansichten von Ninox um Ereignisse: den Klick auf eine Zeile eines Ansichtsfeldes (onclick) und die Auswahl eines Datensatzes in der Ansicht einer Tabelle (onselected). In Ihren Formeln werden diese Funktionen genau so geschrieben, in Kleinbuchstaben.
Diese Ereignisse lassen sich in den Ninext Einstellungen ausschalten, Abschnitt „UI-Verbesserungen“: Ansichts-Ereignisse (onClick, onSelect) (standardmäßig aktiviert).
Klick auf eine Zeile eines Ansichtsfeldes: onclick
Kurzüberblick über die an onclick übergebenen JSON-Eigenschaften
| Eigenschaft | Beschreibung | Beispiel / Verwendung |
|---|---|---|
| previousID | Die ID des Datensatzes, der vor dem Klick in der Ansicht ausgewählt war; leer, wenn es keinen gab. | „A1“ |
| targetID | Die ID des durch den Klick angesteuerten Datensatzes. | „A3“ |
| targetLineNum | Die Nummer der angeklickten Zeile (beginnend bei null). | 3 |
| targetColumnNum | Die Nummer der in der Ansicht angeklickten Spalte (beginnend bei null). | 4 |
| targetColumnValue | Der in der angeklickten Zelle angezeigte Textwert. | „Lisa“ |
| targetColumnCaption | Die Spaltenbeschriftung aus der Feldkonfiguration (entweder "caption" oder "field.caption"). | „First Name“ |
Allgemeiner Ablauf
- Die Funktion onclick in der Formel des Ansichtsfeldes definieren
Die Funktion onclick muss in die Formel des Ansichtsfeldes eingebaut werden. Sie erhält ein Objekt (namens "event") mit den oben beschriebenen Eigenschaften. In dieser Funktion bezeichnetthisden Datensatz, der das Ansichtsfeld trägt, nicht die angeklickte Zeile: Diese finden Sie überevent.targetID. - Eigenen Code ausführen
Klickt oder tippt ein Benutzer auf eine Zelle der Ansicht, so führt der Hook von Ninext die Funktion onclick aus. Das Skript kann dann zum Beispiel:- Eigenschaften eines Datensatzes ändern (etwa ein boolesches Feld umschalten).
- Die ID des angeklickten Datensatzes in ein dafür vorgesehenes Feld schreiben.
- Je nach angeklickter Spalte bedingte Aktionen auslösen.
- Den Inhalt der Ansicht zurückgeben
Am Ende der Funktion muss die Formel den Inhalt der Ansicht zurückgeben (zum Beispiel "select Customer"). Damit erfährt Ninox, welche Datensätze nach der Ausführung des Skripts anzuzeigen sind.
Umsetzungsbeispiele
Vollständiges Beispiel
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 CustomerAnmerkungen:
- Die Funktion schreibt zunächst die ID des angeklickten Datensatzes in das Feld "ID of selected customer".
- Anschließend holt sie den zugehörigen Datensatz aus der Tabelle "Customer".
- Enthält die Spaltenbeschriftung der angeklickten Zelle "checked", so schaltet sie das Feld "Checked" dieses Datensatzes um und gibt true zurück, um anzuzeigen, dass der Klick behandelt wurde.
- Andernfalls gibt die Funktion true oder false zurück, je nachdem, ob die Nummer der angeklickten Spalte 0 ist.
- Zuletzt gibt die Formel "select Customer" zurück, wodurch nach der Ausführung des Skripts der Inhalt der Ansicht erscheint.
Minimalbeispiel
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 CustomerAnmerkungen:
- Dieses Skript schreibt lediglich die ID des angeklickten Datensatzes und gibt eine Debug-Meldung aus.
- Die Rückgabe von false lässt das Standardverhalten für alle nicht eigens behandelten Aktionen zu.
- Wie immer endet die Formel mit "select Customer", um den Inhalt der Ansicht anzuzeigen.
Das sollten Sie sich merken
- Platzierung in der Formel des Ansichtsfeldes:
Die Funktion onclick muss unmittelbar in der Formel des Ansichtsfeldes stehen, nicht in einem Trigger oder an anderer Stelle der Anwendung. - Rückgabe des Ansichtsinhalts:
Anders als bei Funktionen, die einen booleschen Wert erwarten, muss die letzte Zeile der Formel den Inhalt der Ansicht zurückgeben (z. B. "select Customer"). - Rückgabewert von onclick:
truezeigt an, dass der Klick behandelt ist: Ninox öffnet den angeklickten Datensatz nicht.falseoder gar kein Wert lässt Ninox sein übliches Verhalten anwenden und den Datensatz öffnen. Ein Klick auf eine Gruppierungszeile ruft onclick nicht auf. - Eine separat ausgewertete Funktion:
Ninext entnimmt der Formel nur die Funktion onclick und wertet sie dann separat aus. Sie sieht also weder die Variablen noch die anderen Funktionen, die an anderer Stelle in der Formel deklariert sind: Deklarieren Sie innerhalb von onclick alles, was sie benötigt. - Nutzung der Ereignisparameter:
Verwenden Sie die Angaben aus dem Objekt "event" (previousID, targetID, targetLineNum, targetColumnNum, targetColumnValue, targetColumnCaption), um Ihre Aktionen auf den Klickzusammenhang abzustimmen. - Test auf verschiedenen Geräten:
Vergewissern Sie sich, dass die Funktion sowohl auf Desktop-Rechnern als auch auf Touch-Geräten richtig arbeitet, denn der Hook behandelt sowohl das Ereignis "click" als auch "touchend".
Auswahl eines Datensatzes in der Ansicht einer Tabelle: onselected
Ninext ruft eine Funktion onselected() jedes Mal auf, wenn in der Ansicht einer Tabelle (der Liste der Datensätze der Tabelle) eine Zeile ausgewählt wird. Deklarieren Sie sie ohne Parameter in der Formel des Leserechts der Tabelle („Readable if“). In dieser Funktion bezeichnet this den ausgewählten Datensatz. Ihr Rückgabewert wird nicht verwendet, und Ninox öffnet den Datensatz wie gewohnt.
function onselected() do
debug("customer->onselect : " + this)
end;
trueHier schreibt jede Auswahl bei geöffnetem Ninext-Panel eine Zeile in den Debug-Tracer, die den gewählten Datensatz zusammenfasst.
Die Formel behält ihre Aufgabe: Ninox entscheidet anhand ihres letzten Wertes, wer die Tabelle lesen darf. Beenden Sie sie daher mit Ihrer üblichen Lesebedingung; true, wie hier, ändert nichts am Leserecht einer für alle offenen Tabelle. Wie bei onclick wird die Funktion allein aus der Formel entnommen.
