3 Replies Latest reply on Aug 29, 2014 10:06 AM by erolst

    Kann ich Objektnamen per Script eintragen?

    since1984

      Hallo Allerseits,

      ich muss ab und zu einer ganzen Reihe von Feldern Objektnamen verpassen. Per Hand nervt das ganz schön ... ;-)

      Kennt jemand einen Weg, wie ich das automatisieren / scripten kann?

      Vielen Dank im Voraus
      HJ


        • 1. Re: Kann ich Objektnamen per Script eintragen?
          erolst

          since1984 wrote:

          Kennt jemand einen Weg, wie ich das automatisieren / scripten kann?


           

          Kannst du nicht (jedenfalls nicht mit Bordmitteln) – 1. gibt es keinen entsprechenden Befehl, und 2. laufen Scripts ohnehin nicht im Layout-Modus.

           

          Aber möglicherweise lässt sich, was immer du mit all diesen Feldnamen bezweckst, anders/einfacher bewerkstelligen …?!

          • 2. Re: Kann ich Objektnamen per Script eintragen?
            since1984

            erolst schrieb: Aber möglicherweise lässt sich, was immer du mit all diesen Feldnamen bezweckst, anders/einfacher bewerkstelligen …?!

             

            Hallo erolst,

             

            das kann natürlich sein - ich bin kein wirklicher FM-Profi, sondern eher engagierter Laie ... ;-)

             

            Ich versuche es zu erklären:

            Ich möchte mir ein System aufbauen, bei dem ich das Look&Feel von Buttons und Logos leicht zentral verändern kann. Dazu habe ich eine zentrale Tabelle, in der sämtliche Grafiken für diesen Zweck (auch in verschiedenen Varianten) zur Verfügung gestellt werden. Weiterhin gibt es eine Tabelle aller Layouts, die dieses System nutzen. Die dritte Tabelle enthält die Zuordnung der einzelnen Grafiken zu den jeweiligen Layouts und deren Feldern. In den Layouts wiederum wird jeder Button durch ein Containerfeld dargestellt - so kann ich auch die Grafik "auswechseln", wenn auf diesem Platz ein anderes Icon sinnvoll ist (oder z.B. ausgegraut werden soll). Diese Containerfelder sind nach einem bestimmten System benannt.

             

            Beim Start der Anwendung läuft ein Script, das Layout für Layout die Containerfelder passend "befüllt". Die entsprechenden Containerfelder eines Layouts sind in der dritten Tabelle festgelegt durch eine laufende Nummer. Um das passende Feld anzufahren nutze ich "Gehe zu Objekt". Den passenden Objektnamen setze ich aus festgelegten Komponenten und der laufenden Nummer zusammen. *)

             

            Dieser Aufbau setzt (leider) voraus - es sei denn, Du hast eine andere Idee - dass in jeder relevanten Tabelle die Grafikfelder vorgehalten werden müssen, in die zu Beginn und ggf. im laufenden Betrieb die passenden Grafiken für das jeweilige Layout eingefüllt werden. Du weißt selber, was da in einem Layout an Buttons zusammenkommen kann.  ;-)) Ich habe jetzt mal mit 30 Containerfeldern und 30 dazu passenden Textfeldern für die Untertitel der Buttons begonnen. Das macht dann schon mal 60 ... und das multipliziert mit der Anzahl der betreffenden Tabellen, das sind dann ohne Beiwerk ca. 10 - 20 Tabellen ...  :-(

             

            Zwei Dinge machen eine "Heidenarbeit": Erstens das Umbenennen der Felder für eine weitere Tabelle. Ich kann zwar das Layout duplizieren, wenn sich die Werte aber auf eine andere Tabelle beziehen sollen, muss ich jedes einzelne ändern. Und dann kommt eben noch hinzu, dass ich jedes Feld mit einem Objektnamen versehen muss und es keine doppelten Objektnamen geben darf. Heißt in der Praxis, dass für jedes Layout noch irgendein Präfix zum Objektnamen dazukommt, das die "Einmaligkeit" herstellt.

             

            So - das war´s in kurzen Worten. Ich weiß nicht, ob die Beschreibung gut genug ist um durchzublicken. Ich würde mich jedenfalls frreuen, wenn ich ein Feedback von Dir bekäme ...

             

            Vielen Dank im Voraus

            since1984

             

             

            *) Da gibt es noch ein kleines Problem, siehe https://fmdev.filemaker.com/thread/77833

            • 3. Re: Kann ich Objektnamen per Script eintragen?
              erolst

              since1984 wrote:

              So - das war´s in kurzen Worten. Ich weiß nicht, ob die Beschreibung gut genug ist um durchzublicken. Ich würde mich jedenfalls frreuen, wenn ich ein Feedback von Dir bekäme ...

               

              Was ich in deiner gesamten Beschreibung nicht finde, ist der Begriff “globales Feld” … da solltest du mal ansetzen.

               

              Außerdem würde ich beim Beschreiben von Feldern vermeiden, sie durch ihr Auftreten als Layout-Objekte anzusprechen, sondern über das Datenschema gehen. Wenn du z. B. die gleichen Felder in jeder Tabelle gleich benennst, kannst du ihre Namen speichern (etwa in einer “Eigenen Funktion”) oder, noch besser, mit ExecuteSQL() dynamisch eine Feldliste erstellen; und das sogar gefiltert, z. B. alle Felder, die mit einem bestimmten Substring beginnen, oder ihn enthalten …usw.

               

              Jetzt könntest du in einem Script mit “Setze Feld nach Name” und einer Feldreferenz wie Hole (LayoutTabellenName ) & "::" & HoleWert ( $listeFeldNamen ; $schleifenZaehler ) die Felder in einer Schleife dynamisch setzen (fragt sich nur, womit ? Wahrscheinlich mit den Ergebniswerten, die du mit einer zweiten Feldliste holst … )

               

              Aber wie gesagt, „Feld mit globaler Speicherung“ scheint mir hier das Stichwort zu sein …