Gespeichert von FileMaker Entwickler am Di, 04/28/2020 - 17:42

Navigation mit "Zurück Button"

Um das User Interface für den Kunden einfach zu gestalten, sollte der FileMaker Entwickler Elemente und Funktionen einsetzen, die der Anwender bereits aus anderen Programmen kennt. Den "Zurück-Button" kennt jeder Anwender aus seinem Browser.

SideMenu - FileMaker Entwickler in Hamburg

Eine einfache Funktion für Lösungen mit einer einzigen "FontEnd Datei" lässt sich mit 1 Skript und 1 Button umsetzen.

Skript "Layout History"

Obwohl FileMaker die Möglichkeit bietet, einen einfachen SkriptSchritt auf einen einen Button zu legen, empfehlen wir immer ein zentrales Skript für den Wechsel der Layouts. Was am Anfang vielleicht überflüssig aussieht, zeigt in der späteren Entwicklung seinen Nutzen (z.B. für Zugangsbeschränkungen, voreingestellte Suchabfragen, Mandanten usw.)

Jedes Layout, das ein Anwender (per Button, Menü usw.) aufrufen kann, ruft unser zentrales Skript "100 Layout" auf. Dieses wertet den per ScriptParameter übergebenen Wert aus, um das gewünschte Layout aufzurufen. Hier lässt sich das Skript "100-010 Layout History" auf einfache Weise per  PerformScript einbinden.

Name: 100-010 Layout History

1. #_sp ( "Funktion" ; "zurück" )

2. If [ _gp ( Get ( ScriptParameter )  ; "Funktion" ) = "zurück" ]
3.   Go to Layout [ RightValues ( $$layout_id_list ; 1 )]
4.        Set Variable [ $$layout_id_list; Value:
                Let (~anzahl_werte = ValueCount ( $$layout_id_list );
                      LeftValues ( $$layout_id_list ; ~anzahl_werte -1 ) ) ]

5. Else If [ GetAsNumber (RightValues ( $$layout_id_list ; 1 )) ≠ Get ( LayoutNumber )
6.    Set Variable [ $$layout_id_list; Value:$$layout_id_list & ¶ & Get ( LayoutNumber ) ]
7. End If

Das Skript "100-010 Layout History" hat 2 Funktionen (die Funktionen könnten auch auf 2 getrennte Skripten verteilt werden):

  1. Vorheriges Layout der Historie aufrufen : Der Back-Button im Layout ruft das Skript "100 Layout" mit dem Parameter " _sp ( "Funktion" ; "zurück" )" auf ("_sp" ist eine CustomFunction zur übergabe von Parametern, die hier beschrieben ist)
    Danach wird in Zeile 4 die Liste der IDs in der globalen Variable "$$layout_id_list" um den letzten Eintrag reduziert
     
  2. Neuen Eintrag in Historie zufügen : Bei jedem Layoutwechsel durch den Anwender, wird das Skript "100 Layout" ausgeführt. Dieses ruft vor dem Layoutwechsel das Skript "100-010 Layout History" (ohne Parameter) auf, um die aktuelle Layout ID  vor dem Wechsel in die Historie zu schreiben:

    Ohne Parameter wird das Skript ab Step 5 ausgeführt:
    Wenn der letzte Wert in der globalen Variable "$$layout_id_list" ungleich der aktuellen Layout ID ist (Duplikate vermeiden), wird die aktuelle Layout ID am Ende der Liste angehängt

 

Back Button für Lösungen mit mehreren UI Dateien

Vor allem ältere Lösungen haben oftmals mehrere Dateien, die vom Anwender genutzt werden. Die obige Lösung funktioniert in abgewandelter Form auch über mehrere Dateien:

Da der Anwender in der Regel beliebig zwischen Dateien und Layouts hin- und herwechseln kann, darf die Historie nicht in einer globalen Variable geführt werden. Stattdessen eignet sich ein globales Feld in einer zentralen Anwender-Einstellungen-Tabelle.

Um dann unterscheiden zu können, in welcher der UI Dateien das "Layout mit der ID 100" aufgerufen werden soll, wird der Wert in der Historie um ein Prefix mit Trennzeichen ergänzt. Die Historie könnte z.B. so aussehen:

Datei_1#100
Datei_1#125
Datei_2#92
Datei_2#100
Datei_1#100
Datei_3#58

Wenn der Anwender auf den Zurück Button klickt, muss nur ausgewertet werden, in welcher Datei das Skript "100-010 Layout History" ausgeführt werden soll. Dafür wird der vordere Teil des Eintrags (bis zum # Trennzeichen) ausgewertet und das Skript "100-010 Layout History" in der entsprechenden aufgerufen und der zweite Teil des Eintrags als Parameter übergeben.

Weitere Hinweise

Sowohl die einfache Version mit der globalen Variable, als auch die aufwendigere mit globalem Feld sind Multiuser-tauglich, da globale Variablen und globale Felder für jeden User individuelle Werte haben.

 

 

 

Mamtemic GmbH:
FileMaker Entwicklung, FileMaker Programmierung, Individuelle Datenbanklösungen, Speziallösungen, Web Applications, Auswertungen & Berichte, Außendienst Steuerung, Spezial Kalkulationen, Datenkonvertierung, FileMaker Entwickler für die Anpassung und Wartung Ihrer Inhouse Datenbank
FileMaker Development in Hamburg, Deutschland und Europa, FileMaker Consulting in Norddeutschland