Bildschirmfoto 2025-03-20 um 14.00.50.

Beim Arbeiten mit FileMaker kann es sinnvoll sein, Fensterpositionen und -größen zu speichern, damit sich Fenster beim erneuten Öffnen an derselben Stelle befinden. In diesem Beitrag zeige ich, wie das mit einer Tabelle zur Speicherung der Fensterpositionen und einem Skript-Trigger umgesetzt wird. Das Problem bestand darin, es öffnet sich ein Fenster, aus diesem Fenster wieder ein Fenster. Das ganze wird überlagert. Aber eigentlich benötigt der Kunde alle Informationen sichtbar, verteilt über mehrere Bildschirme.

Die Umsetzung, recht einfach und der Zeitaufwand hält sich in Grenzen. Ich lege eine Tabelle an, diese muss nicht referenziert sein. Einfach -FEN_Fensterposition-, FileMaker legt freundlicherweise ja auch gleich ein passendes Layout an. Ich habe hinterlegt Spalten für:

  1. FensterLinks -Hole (FensterLinks)
  2. FensterOben -Hole (FensterOben)
  3. FensterBreite -Hole (FensterBreite)
  4. FensterHoehe. -Hole (FensterHoehe)
  5. UserName -Hole (ProgrammBenutzerName)
  6. id_fenster -Hole ( LayoutNummer )

Wir starten per SriptTrigger jeweils das gleiche Script, übergeben einmal den Parameter -close-, bei Layout Verlassen, einmal bei Datensatz laden, per Parameter -open-.

Am Anfang des Sciptes setzen wir alle benötigten Variablen. Dann öffnen wir ein Fenster mit der Tabelle FEN_Fensterposition bei 1x1 Pixel bei -30000 x -30000. Also für den Prozess unsichtbar. Wenn der Parameter -open- gesetzt ist, gehen wir und suchen nach der Layout-ID und dem User. Wird ein Datensatz gefunden, setzen wir die Feldwerte in Variablen und nutzen den Befehl -Fensterposition/größe ändern. Allerdings erst nachdem wir unser Arbeitsfenster für die Suche geschlossen haben. Wird ein Datensatz gefunden, verschiebt sich das Fenster in die angegebene Position. Gibt es keinen gefundenen Datensatz, bleibt das Fenster wie geöffnet.

Kommt über den Trigger der Wert -close-, arbeiten wir in ähnlicher Form. Wir suchen nach der Fenster_ID und dem User. Wird diesmal kein Datensatz gefunden, dann wird ein neuer Datensatz erstellt und die Werte der Position werden eingetragen. Wird ein Datensatz gefunden, werden die Positionsdaten überschrieben.

Das ganze ist einfach umzusetzen und im Handling, da keine Referenzen notwendig sind, sehr schnell zu implementieren.