> For the complete documentation index, see [llms.txt](https://docs.ninox.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ninox.com/ninox-scripting/de/automate-your-workflows/work-with-functions/user-interface.md).

# Nutzeroberfläche

Diese Funktionen steuern, was Nutzer sehen. In diesem Kapitel lernst du, wie du Meldungen anzeigst, Entscheidungen abfragst und Nutzer durch die App führst.

{% hint style="info" %}
Alle Funktionen in diesem Kapitel laufen nur auf dem Client, da sie Elemente der Nutzeroberfläche betreffen. Auf dem Server haben sie keine Wirkung.
{% endhint %}

<table><thead><tr><th width="224.484375">Funktion (A-Z)</th><th>Aufgabe</th></tr></thead><tbody><tr><td><code>alert()</code></td><td>Zeigt eine einfache Meldung an</td></tr><tr><td><code>closeAllRecords()</code></td><td>Schließt alle offenen Formularansichten</td></tr><tr><td><code>closeFullscreen()</code></td><td>Schließt die Formularansicht im Vollbildmodus</td></tr><tr><td><code>closeRecord()</code></td><td>Schließt die aktuelle Formularansicht</td></tr><tr><td><code>dialog()</code></td><td>Zeigt einen Dialog mit Antwortoptionen an</td></tr><tr><td><code>openFullscreen()</code></td><td>Öffnet einen Datensatz im Vollbildmodus</td></tr><tr><td><code>openPage()</code></td><td>Öffnet eine Seite</td></tr><tr><td><code>openPrintLayout()</code></td><td>Öffnet einen Datensatz in einem Druck-Layout</td></tr><tr><td><code>openRecord()</code></td><td>Öffnet einen Datensatz in seiner Tabelle</td></tr><tr><td><code>openTable()</code></td><td>Öffnet eine Tabelle</td></tr><tr><td><code>popupRecord()</code></td><td>Öffnet einen Datensatz in einem Pop-up</td></tr></tbody></table>

## Meldungen anzeigen und Bestätigungen abfragen

Nutze diese Funktionen, wenn du Nutzer mit einer Meldung führen oder eine Bestätigung abfragen willst.

### Mit `alert()` eine einfache Meldung anzeigen <a href="#show-a-message-with-alert" id="show-a-message-with-alert"></a>

Nutze `alert()`, um ein Pop-up mit einer Meldung und einer **OK**-Schaltfläche anzuzeigen.

Nutze es, wenn du:

* eine erfolgreiche Aktion bestätigen willst.
* auf fehlende Eingaben hinweisen willst.
* Informationen anzeigen willst, die Nutzer vor dem Fortfahren bestätigen sollen.

`alert(any)`

* `any` der Wert oder die Meldung, die angezeigt werden soll

`alert()` gibt keinen Wert zurück.

#### Schauen wir uns einige Beispiele an:

```ninox
alert("I am a pop-up. Please click 'OK' to confirm.")
```

Zeigt ein Pop-up mit einer **OK**-Schaltfläche an.

```ninox
alert("This was the time at the very moment you clicked the button: " + time(now()) + ".")
```

Zeigt die aktuelle Uhrzeit an, wenn sich das Pop-up öffnet.

Tipps:

* Halte Meldungen kurz.
* `alert()` läuft nur auf dem Client.
* Wenn ein Skript `alert()` mehrmals aufruft, wird nur der letzte Aufruf angezeigt.
* Nutze `dialog()`, wenn Nutzer eine Auswahl treffen sollen.

### Mit `dialog()` eine Bestätigung abfragen <a href="#show-a-dialog-with-dialog" id="show-a-dialog-with-dialog"></a>

Nutze `dialog()`, um einen Dialog mit Titel, Meldung und Antwortoptionen anzuzeigen.

Nutze es, wenn du:

* Nutzer um eine Entscheidung bitten willst.
* klare Antworten wie `Yes` und `No` anbieten willst.

`dialog(string, string, [string])`

* erstes `string` der Titel des Dialogs
* zweites `string` die Meldung im Dialog
* drittes `[string]` die Antwortoptionen, die angezeigt werden sollen

`dialog()` gibt die ausgewählte Antwort als String zurück.

Das Skript wartet, bis der Nutzer eine Antwort auswählt.

#### Schauen wir uns einige Beispiele an:

```ninox
dialog("Bestätigung", "Diesen Datensatz wirklich löschen?", ["Ja", "Nein"])
```

Öffnet einen Bestätigungs-Dialog für eine Löschaktion.

```ninox
let mytitel := "Datensatz löschen";
let myAnzeige := "Soll dieser Datensatz gelöscht werden? Bist du 100% sicher?";
let myOptionen := ["Ja, er kann weg.", "Nein! Ich brauche ihn noch!"];
if dialog(mytitel, myAnzeige, myOptionen) = "Ja, er kann weg." then
    delete this
end
```

Löscht den aktuellen Datensatz nur, wenn der Nutzer dies bestätigt.

```ninox
dialog("Duplizieren!", "Möchtest du den duplizierten Namen behalten?", ["Nein", "Ja"])
```

Fordert den Nutzer auf, die fragliche Eingabe noch einmal zu prüfen.

Tipps:

* Speichere das Ergebnis in einer Variable, wenn spätere Schritte davon abhängen.

## Tabellen, Seiten, Datensätze und Druck-Layouts öffnen

Mit diesen Funktionen führst du Nutzer zur nächsten relevanten Stelle in der App. Du kannst auch Datensätze aus anderen Tabellen anzeigen, ohne die aktuelle Ansicht zu verlassen.

### Eine Seite mit `openPage()` öffnen <a href="#open-a-page-with-openpage" id="open-a-page-with-openpage"></a>

Nutze `openPage()`, um eine Seite anhand ihres Namens zu öffnen.

Nutze die Funktion, wenn du:

* Nutzer mit Schaltflächen und Triggern durch deine App führen möchtest.

`openPage(string)`

* `string` **Bezeichnung** oder **Interner Name** der Seite

`openPage()` schließt die aktuelle Seite, das Formular oder die Tabelle. Anschließend öffnet die Funktion die ausgewählte Seite.

{% hint style="info" %}
Beim Text in der Funktion wird Groß- und Kleinschreibung nicht unterschieden.
{% endhint %}

#### Schauen wir uns einige Beispiele an:

```ninox
openPage("Dashboard")
```

Öffnet die Seite mit dem Namen „Dashboard“.

```ninox
openPage("Rechnungen_Dash")
```

Öffnet die Seite mit dem internen Namen „rechnungen\_dash“.

{% hint style="warning" %}
Wenn du die **Bezeichnung** oder den **internen Namen** einer Seite änderst, passe auch den Text in dieser Funktion an. Ninox aktualisiert ihn nicht automatisch.
{% endhint %}

Tipps:

* Wenn die Seite Tabs hat, öffnet Ninox den ersten Tab.

### Eine Tabelle mit `openTable()` öffnen <a href="#open-a-table-with-opentable" id="open-a-table-with-opentable"></a>

Nutze `openTable()`, um eine Tabelle anhand ihres Namens zu öffnen.

Nutze die Funktion, wenn du:

* Nutzer mit Schaltflächen und Triggern durch deine App führen möchtest.

`openTable(string)`

* `string` der Name (**Bezeichnung**) der zu öffnenden Tabelle

`openTable()` schließt die aktuelle Tabelle oder Seite. Anschließend öffnet die Funktion die ausgewählte Tabelle.

{% hint style="info" %}
Beim Text in der Funktion wird Groß- und Kleinschreibung nicht unterschieden.
{% endhint %}

#### Schauen wir uns ein Beispiel an:

```ninox
openTable("Rechnungen")
```

Öffnet die Tabelle "Rechnungen".

Tipps:

* Ninox öffnet die erste Ansicht der Tabelle.

{% hint style="info" %}
Wenn du den Namen (die **Bezeichnung)** einer Tabelle änderst, passe auch den String in dieser Funktion an. Im Gegensatz zu den internen Feldnamen kann Ninox den String nicht automatisch aktualisieren.
{% endhint %}

### Einen Datensatz mit `openRecord()` öffnen <a href="#open-a-record-with-openrecord" id="open-a-record-with-openrecord"></a>

Nutze `openRecord()`, um einen Datensatz direkt zu öffnen.

Nutze die Funktion, wenn du:

* Nutzer mit Schaltflächen und Triggern durch deine App führen möchtest.
* einen bestimmten Datensatz zur Bearbeitung öffnen möchtest.

`openRecord(nid)`

* `nid` der Datensatz, den du öffnen möchtest

`openRecord()` schließt das aktuelle Formular. Liegt der Zieldatensatz in einer anderen Tabelle, schließt die Funktion auch die aktuelle Tabelle. Anschließend öffnet sie die Tabelle und das Formular des Zieldatensatzes.

#### Schauen wir uns einige Beispiele an:

```ninox
openRecord(record(einstellungen, 1))
```

Öffnet den Datensatz mit der ID `1` in der Tabelle „Einstellungen“.

```ninox
openRecord(first(select kontakte where name = "Renate Muster"))
```

Öffnet die Tabelle „Kontakte“ und den ersten Datensatz, in dem im Feld „Name“ „Renate Muster“ steht.

Tipps:

* Nutze `popupRecord()`, wenn eine kurze Anzeige genügt. Nutzer bleiben dabei in der aktuellen Tabelle.

### Einen Datensatz mit `popupRecord()` anzeigen <a href="#display-a-record-with-popuprecord" id="display-a-record-with-popuprecord"></a>

Nutze `popupRecord()`, um einen Datensatz in einem Pop-up anzuzeigen.

Nutze die Funktion, wenn du:

* einen bestimmten Datensatz kurz öffnen und bearbeiten möchtest, ohne deinen Arbeitsablauf zu verlassen.

`popupRecord(nid)`

* `nid` der Datensatz, der angezeigt werden soll

#### Schauen wir uns einige Beispiele an:

```ninox
popupRecord(record(Einstellungen, 1))
```

Öffnet den Datensatz mit der ID `1` aus der Tabelle „Einstellungen“ in einem Pop-up-Formular.

```ninox
popupRecord(first(select kontakte where name = "Max Muster"))
```

Öffnet den ersten Datensatz aus der Tabelle „Kontakte“, in dem im Feld „Name“ „Max Muster“ steht, in einem Pop-up-Formular.

Tipps:

* Nutze `record()` statt `select`, um einen Datensatz abzurufen. Das ist bei großen Tabellen deutlich schneller.

### Ein Druck-Layout mit `openPrintLayout()` öffnen <a href="#open-a-print-layout-with-openprintlayout" id="open-a-print-layout-with-openprintlayout"></a>

Nutze `openPrintLayout()`, um einen Datensatz in einem bestimmten Druck-Layout zu öffnen.

Nutze die Funktion, wenn du:

* ein bestimmtes Druck-Layout eines definierten Datensatzes öffnen möchtest.

`openPrintLayout(nid, string)`

* `nid` Datensatz, den du im Druck-Layout anzeigen möchtest
* `string` Name des Druck-Layouts

{% hint style="info" %}
Beim Text in der Funktion wird Groß- und Kleinschreibung nicht unterschieden.
{% endhint %}

#### Schauen wir uns einige Beispiele an:

```ninox
openPrintLayout(this, "Rechnung")
```

Öffnet das Druck-Layout "Rechnung" für den aktuellen Datensatz.

```ninox
let myRe := first(select rechnungen where text(status) = "Bestätigt");
openPrintLayout(myRe, "rechnung pdf")
```

Sucht den ersten Datensatz in der Tabelle "Rechnungen", dessen Feld "Status" auf "Bestätigt" gesetzt ist. Öffnet ihn anschließend im Druck-Layout "Rechnung PDF".

## Aktuelle Ansicht ändern

Nutze diese Funktionen, wenn du Anzeigemodi wechseln oder offene Formularansichten schließen möchtest.

### Vollbildmodus mit `openFullscreen()` und `closeFullscreen()` aktivieren oder verlassen

Nutze diese Funktionen, um einen Datensatz in seiner Formularansicht im Vollbildmodus zu öffnen oder den Vollbildmodus zu verlassen.

`openFullscreen(nid)`\
`closeFullscreen()`

* `nid` der Datensatz, den du im Vollbildmodus öffnen möchtest

#### Schauen wir uns einige Beispiele an:

```ninox
openFullscreen(this)
```

Öffnet den aktuellen Datensatz im Vollbildmodus.

```ninox
closeFullscreen()
```

Verlässt den Vollbildmodus und kehrt zur Ansicht zurück, die zuvor geöffnet war.

Tipp:

* `openFullscreen()` füllt das gesamte Fenster mit der Formularansicht aus.

### Nutze `closeRecord()` und `closeAllRecords()` zum Schließen offener Formularansichten <a href="#close-record-views" id="close-record-views"></a>

Nutze diese Funktionen, um:

* Nutzer zur darunterliegenden Tabelle, Ansicht oder Seite zurückzuführen.
* mehrere übereinanderliegende Formularansichten schnell zu schließen.

`closeRecord()`\
`closeAllRecords()`

#### Schauen wir uns einige Beispiele an:

```ninox
closeRecord()
```

Schließt die aktuelle Formularansicht. Nutzer sehen danach das darunterliegende Formular. Ist kein weiteres Formular geöffnet, sehen sie die aktuelle Tabellenansicht.

```ninox
closeAllRecords()
```

Schließt alle offenen Formularansichten und führt Nutzer zur aktuellen Tabellenansicht zurück.

Tipps:

* Schließe nur die Ansichten, die nicht mehr benötigt werden.
* Vermeide mehrere Öffnen- und Schließen-Aktionen in einem Skript, wenn der Ablauf unklar ist.

## Häufige Anwendungen von Meldungen und Navigationen

Diese kurzen Muster zeigen typische Wege, Nutzer in einer App zu führen.

### Kurze Erfolgsmeldung anzeigen

```ninox
alert("✔ E-Mail gesendet!")
```

Zeigt direktes Feedback nach einer erfolgreichen Aktion an.

### Löschbestätigung abfragen

```ninox
dialog("Bestätigung", "Diesen Datensatz wirklich löschen?", ["Ja", "Nein"])
```

Fragt den Nutzer vor einer Aktion, die nicht rückgängig gemacht werden kann.

### Beim Erstellen neuer Datensätze im Arbeitsablauf bleiben

```
let neu := create kontakte;
neu.erstellungsdatum := today();
popupRecord(neu)
```

Erstelle Datensätze in einer anderen Tabelle, ohne deine aktuelle Position in der App zu verlassen. Erstelle den Datensatz über einen Button und öffne ihn in einem Pop-up-Formular, um weitere Daten hinzuzufügen.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.ninox.com/ninox-scripting/de/automate-your-workflows/work-with-functions/user-interface.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
