Warenkorb
0
Wagen 0
Telefonische Beratung +49 (0) 441-30 43 76 40
Die Navigation wird heutzutage in den meisten Lösungen noch auf statische Weise realisiert, d.h. es werden statische Schaltflächen mit entsprechender Beschriftung auf dem Layout eingefügt und mit einer Taste belegt. Diese Vorgehensweise hat den Nachteil, daß bei Erweiterungen oder Änderungen die entsprechende Taste meist auf mehreren Layouts hinzugefügt oder entfernt werden muß und ist aus diesem Grund relativ fehleranfällig. Auch mehrsprachige Lösungen lassen sich auf diese Weise nur sehr umständlich realisieren. Mit einer Datenbankgesteuerten Navigation in einer FileMaker-Lösung kann man den genannten Problemen auf elegante Weise entgehen. Eine solche Navigation hat den Vorteil, daß sich auf jedem Layout immer die gleichen Navigationselemente befinden und daß beispielsweise auch eine Mehrsprachenfähigkeit problemlos realisierbar ist. Im Prinzip läßt sich eine datenbankgesteuerte Navigation in FileMaker auf unterschiedlichen Wegen realisieren. In diesem Artikel zeige ich einen einfachen Weg, wie eine datenbankgesteuerte Navigation in einer FileMaker-Datenbank implementiert werden kann. Am Ende des Artikels kann die erörterte Datenbankdatei im FP7- und FMP12-Format für FileMaker 9-11 sowie FileMaker 12 kostenlos heruntergeladen werden.
Zunächst sollte man sich über die Ziele bewußt sein, was die Navigation im Einzelnen können und wie sie aufgebaut sein soll. Für meine Beispieldatei habe ich folgende Anforderungen definiert:
Die in diesem Beispiel gezeigte Navigationslösung funktioniert ohne Anpassungen nicht, wenn die Benutzeroberfläche in mehreren Fenstern laufen soll, da der aktuelle Layoutname in einem globalen Feld gespeichert wird. Diese Problematik ließe sich relativ einfach mit einem Fenstermanagement lösen – da ich in meinem Beispiel jedoch eine möglichst einfache Navigationslösung zeigen möchte, habe ich diese Option nicht integriert.
Damit wir die grafischen Elemente und Beschriftungen in den Layouts anzeigen können, müssen wir die entsprechenden Felder in einer zentralen Tabelle ablegen. In unserer Beispieldatei befinden sich die entsprechenden Felder in der Tabelle <<Stammdaten>>. Für die grafischen Elemente werden Medienfelder verwendet, für die Beschriftungen Textfelder. Damit die Feldinhalte später auch im Suchen-Modus angezeigt werden können, müssen alle relevanten Felder in der Tabelle <<Stammdaten>> als globale Felder definiert werden. Für die grafischen Elemente der Navigation wurden in der Lösung folgende globale Felder angelegt:
Für die Tastenbeschriftungen wurden folgende globale Felder angelegt:
Für die zweite Ebene (Zeile) wurden die Felder txt_z2s1 bis txt_z2s8 angelegt. Für die Navigation werden außerdem Felder für Script-Parameter benötigt, die in der Navigation individuell anpaßbar sind. Auch bei diesen Feldern handelt es sich in der Tabelle <<Stammdaten>> um globale Felder:
Für die zweite Ebene (Zeile) wurden die Felder par_z2s1 bis par_z2s8 angelegt. In der Tabelle <<Stammdaten>> befindet sich außerdem das globale Feld <<_sys_Akt_Layout>>, in das das jeweils aktuelle Layout geschrieben wird, das globale Schlüsselfeld <<_sGlobal>> (enthält „1“) sowie einige weitere grafische Elemente für die Anzeige auf FileMaker-Layouts.
In einer weiteren Tabelle namens <<gui>> werden alle Layouts gespeichert mit entsprechenden Beschriftungen und Parametern. Als Primärschlüssel wird in dieser Tabelle der Layoutname verwendet. Im Gegensatz zur Tabelle <<Stammdaten>> werden die Felder in dieser Tabelle nicht als globale Felder, sondern als normale Text- und Medienfelder angelegt. Für die Beschriftung wurden folgende Felder angelegt:
Für die zweite Menüebene wurden die Felder txt_z2s1 bis txt_z2s8 angelegt. Analog dazu gibt es die Felder
als Flag, ob das jeweilige Feld aktiv ist oder nicht (enthält bei Aktivität 1 und ist ansonsten leer). Die Tabelle <<gui>> enthält als Primärschlüssel das Feld <<_Layoutname>> und einen globalen Schlüssel <<_sGlobal>>.
Als Nächstes muß die GUI-Tabelle mit den Stammdaten verknüpft werden. Hierbei ist zu berücksichtigen, daß es zwei Verknüpfungen zur Tabelle <<gui>> gibt:
Die erste Verknüpfung „gui“ wird für die Funktion der Navigation benötigt. Hierbei enthält das globale Feld <<Stammdaten::_sys_Akt_Layout>> den Namen des aktuellen Layouts und das Feld <<gui::_Layoutname>> den Layoutnamen in der GUI-Datenbank. Die zweite Verknüpfung erfolgt global für die Anzeige des Administrationslayouts mit dem TO = Stammdaten.
Jede Datentabelle der FileMaker-Lösung muß über das Feld <<_sGlobal>> verfügen und über dieses Feld global mit der Tabelle <<Stammdaten>> verknüpft sein. In unserem Beispiel ist dies die Tabelle <<Datentabelle>>.
Sie erinnern sich, daß wir in der Tabelle <<Stammdaten>> einige globale Felder angelegt haben, die für jede Schaltfläche ein grafisches Element und eine Textbeschriftung enthalten. Der Inhalt, der in diese Felder geschrieben wird, stammt aus der Tabelle <<gui>> für jedes einzelne Layout. Das Teilscript ts.GUI_Menüaufbau kümmert sich bei einem Klick auf eine Schaltfläche um die Übertragung der Daten aus der Tabelle <<gui>> in die globalen Felder der Tabelle <<Stammdaten>>.
Im ersten Schritt wird der Fenstermodus ausgelesen, denn um die Daten übertragen zu können, muß sich die Datenbank im Blättern-Modus befinden. Deshalb wird zunächst geprüft, in welchem Modus sich die Datenbank derzeit befindet:
Variable setzen [$fenstermodus; Wert:Hole ( Fenstermodus )] Wenn [fenstermodus = 1] Blätternmodus aktivieren Ende (wenn)
Daraufhin wird der Name des aktuell aufgerufenen Layouts in das globale Schlüsselfeld _sys_Akt_Layout der Tabelle „std“ geschrieben:
Feldwert setzen [std::_sys_Akt_Layout; Hole ( LayoutName )
Anschließend werden nun alle für die Navigation relevanten globalen Felder der Tabelle „std“ mit Werten gefüllt. Dies betrifft alle acht Schaltflächen der ersten und zweiten Zeile in der Navigationsleiste:
Feldwert setzen [std::nav_z1s1;
Wenn(IstLeer(gui::txt_z1s1); „“;
Wenn(
IstLeer(gui::akt_z1s1); std::iPad_taste_inaktiv;
std::iPad_taste_aktiv))]
Zeile 1, Spalte 1, jeweils 1 bis 8 mit Berücksichtigung, ob Menüpunkt aktiv ist oder nicht.
Feldwert setzen [std::txt_z1s1; gui::txt_z1s1]
Zeile 1, Spalte 1, jeweils 1 bis 8
Feldwert setzen [std::par_z1s1; gui::par_z1s1]
Zeile 1, Spalte 1, jeweils 1 bis 8
Im letzten Schritt kehrt das Script zur letzten Abfrage in den Suchmodus zurück, sollte das Script vom Suchenmodus aus aufgerufen worden sein.
Das Script „lay.Navigation“ ist das zentrale Script für die Navigation auf allen Layouts. In unserer kleinen Beispieldatenbank wurden an dieser Stelle bisher nur „normale“ Bildschirmlayouts verwendet, selbstverständlich kann das gleiche Prinzip auch beispielsweise mit Listen- oder Drucklayouts angewendet werden. Als Scriptparameter kommt in diesem Script der für das Layout angegebene Scriptparameter zum Einsatz, der in der ersten Zeile abgefragt wird.
Wenn [Hole(ScriptParameter) = "Scriptparameter aus der Layoutverwaltung"] Datei öffnen ["GFM_GUI"] Gehe zu Layout ["Layoutname"] Script ausführen ["ts.GUI_Menüaufbau"] Fenster aktualisieren [Join-Ergebnisse im Cache löschen] Ende (wenn)
Im FileMaker-Layout kann die Navigation nun auf jedem Layout immer auf die gleiche Weise eingebunden werden, da sie vollständig aus Feldern aus der Tabelle „std“ besteht, deren globale Felder überall verfügbar sind und auch im Suchenmodus angezeigt werden können.
Die angezeigten Texte in der Navigation entsprechen denen, die im Layout „Administration – Navigation“ für das entsprechende Layout eingetragen wurden:
Das Layout zeigt ein Portal zur Tabelle „gui“, in der jedes Layout mit seinen zugehörigen Menüpunkten, Beschriftungen und Script-Parametern gespeichert ist. Soll ein neues Layout hinzugefügt werden, genügt ein Klick auf die [+]-Taste, um einen ungefähr passenden Datensatz zu duplizieren und die Kopie daraufhin anzupassen. Mit der [-]-Taste kann ein Layout aus der Navigation entfernt werden.
Alle in dieser Maske gezeigten grafischen Elemente sind die globalen Felder aus der Tabelle „std“. Die Tabelle wurde um einige weitere Felder angereichert wie beispielsweise verschiedenfarbige Spaltenhintergründe, die in Portalen verwendet werden können.
Unter dem Menüpunkt „Administration – Grafik“ können alle Grafiken für die Benutzeroberfläche angepaßt werden. In der Beispieldatei sind die Grafiken als editierbare Fireworks-PNG-Dateien teils mit Verlaufspfaden gespeichert. Mit Klick auf die rechte Maustaste kann für jedes Medienfeld der Inhalt durch einen neuen Inhalt ausgetauscht werden.
Die Beispieldatei enthält eine Beispieltabelle und ein Beispielportal, die in der Navigation unter [Daten – Eingabe] angezeigt wird. Das Beispielportal enthält zu Anschauungszwecken Schaltflächen und einen Spaltenhintergrund aus der [std]-Tabelle. Mit den in [std] gespeicherten Spaltenhintergründen können für Portale auch bedingte Formatierungen mittels eines Formelfeldes vom Zieltyp „Medien“ realisiert werden.
Die Beispieldatei, die am Ende dieses Artikels heruntergeladen werden kann, wurde teils für die Verwendung des Anker-Bojen-Modells optimiert. Für die Navigation selbst konnte es jedoch nicht konsequent umgesetzt werden, da die Beziehung „std“ immer den gleichen Namen haben muß. Die beispielhaften Daten- und Portaltabellen wurden jedoch nach dem Anker-Bojen-Modell umgesetzt, so daß der weitere Datenteil problemlos ebenso in diesem Modell realisiert werden kann.
Auf der Basis der Beispieldatei können auf verhältnismäßig einfache Weise weitere Funktionen integriert werden. Ein fertiges System könnte beispielsweise über Layouts für alle Systeme, also Mac, Windows, iPad und iPhone enthalten und navigiert durch Skin-Fähigkeit jeweils auf Layouts, die optisch und vom Größenverhältnis her zum System passen. In wenigen Schritten läßt sich die Navigation auch mehrsprachig realisieren, die beliebig viele Übersetzungen zuläßt. Außerdem wäre beispielsweise eine Funktion denkbar, die sich aus jeder Oberkategorie die zuletzt aufgerufene Unterkategorie merkt und beim Zurückspringen zur ersten Hauptkategorie nicht das in der GUI-Dateibank festgelegte Layout ansteuert, sondern das vom Benutzer in dieser Oberkategorie zuletzt aufgerufene Layout. Wer weitere Ideen hat, darf diese natürlich gerne per Kommentar kundtun :-)
Im Folgenden können Sie die in diesem Artikel erläuterte Beispieldatei „GFM_GUI“ im FP7-Format für FileMaker 7-11 sowie im FMP12-Format für FileMaker 12 kostenlos herunterladen. Um den Download zu starten, bitten wir um eine Empfehlung auf Facebook, Google+ oder Twitter.
Dateiinformationen: ZIP-Archiv (697 kB)
Enthält: GFM_GUI.fp7 (1,6 MB), GFM_GUI.fmp12 (2,5 MB)
FileMaker veranstaltet vom 8. September bis zum 6. Oktober 2011 eine kostenlose Webinar-Reihe für FileMaker Go in fünf Teilen mit dem Namen "FileMaker Go Lösungen für iPad und iPhone gestalten". Die Webinare finden jeweils donnerstags ab 14:00 Uhr statt und dauern ca. eine Stunde. In den deutschsprachigen Web-Seminaren zeigt FileMaker,…
Am heutigen 4. April 2012 hat FileMaker die gesamte FileMaker-Palette auf die aktuelle Version 12 gebracht. FileMaker Pro, -Advanced und die FileMaker Server-Versionen für Mac OS X und Windows sowie FileMaker Go für iPad, iPhone und iPod touch besitzen mit der 12 nun die identische Versionsnummer. Eine gute Nachricht zunächst…
Update von FileMaker Go auf Version 1.1.2 bringt der Software die deutsche Sprache bei und behebt einige Fehler.
Hinzufügen von {{itemName}} zum Warenkorb
Hinzugefügt {{EinkaufsName}} zum Warenkorb
Hallo Markus,
deine Navigationslösung hört sich interessant an; ich würde die Beispieldatei gern herunterladen:
– bei FB angemeldet
– Gefällt mir geklickt
– Download startet nicht :(
Kannst du mir weiterhelfen?
greetz
ccp
… sorry, Bitte zurückgenommen … im anderen Browser hats geklappt … danke sehr für deine Mühe & einen feinen Tag