on openStack und Substack

Startseite Foren Deutsches LiveCode-Forum on openStack und Substack

Schlagwörter: 

  • Dieses Thema hat 3 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 7 Jahren von hauke.
Ansicht von 3 Antwort-Themen
  • Autor
    Beiträge
    • #505
      Anonym

        Hallo,

        Ihr könnt mir sicherlich mit meinem folgenden Problem weiterhelfen.

        Beim Oeffnen meiner Desktop-App sollen alle Felder initialisiert werden, was ich wie folgt umgesetzt habe:

        on openStack
          go to card "cardStart"
          put empty into field "fldFolder" on card "cardStart" on stack "Toolbox"
          put empty into field "fldInhalt" on card "cardStart" on stack "Toolbox"
          put empty into field "fldZeilen" on card "cardStart" on stack "Toolbox"
          hide field "lblKeineDuplikate" on card "cardStart" on stack "Toolbox"
        end openStack

        Mit einem Substack wird ein Ergebnisfenster geöffnet. Dieses Ergebnisfenster wird über den folgenden Button geöffnet:

        on mouseUp
          open stack "Original"
          put meinorg into field "fldOrg2"
        end mouseUp

        Nun zu meinem Problem:

        Beim Oeffnen des Substacks wird wieder der Code im Hauptstack ausgeführt und alle Felder im Hauptstack werden initialisiert. Die Initialisierung soll aber nur beim Oeffnen der App durchgeführt werden. D.h. ich suche nach einer Lösung, dass die Felder nur beim Oeffnen der App initialisiert werden, aber nicht beim Oeffnen des Substacks.

        Ich wuerde mich freuen, wenn Ihr mich unterstützen könnt.

        Andi

      • #507
        hauke
        Administrator

          Hallo Andi,

          das ist ein häufig auftretendes Problem. Wenn Du ein Skript zum Ereignis “on openStack” in den Hauptstack schreibst, dann soll dieser natürlich nur beim ersten Programmstart ausgeführt werden. Wenn Du aber einen Substack öffnest, wird dieses Ereignis “openStack” wiederum im System ausgelöst. Findet LiveCode in dem gerade geöffneten Stack kein Skript, das dieses Ereignis behandelt, sucht es eine Ebene höher und findet das openStack-Skript im Hauptstack und führt es erneut aus.

          Die Lösung besteht also darin, das folgende Skript dem Substack zuzuordnen:

          on openStack
            -- nix tun bzw. bei Bedarf Substack initialisieren
          end openStack

          Nun wird das openStack-Ereignis im Substack abgefangen und und ist damit vom Tisch. Fertig.

          Beachte aber auch noch folgendes:

          Referenzen auf Elemente wie zum Beispiel eine “card” werden in LiveCode immer mit “of” durchgeführt, nicht mit “on”.

          Also zum Beispiel:

          put empty into field "fldFolder" of card "cardStart" of stack "Toolbox"

          Sonst gibt es Probleme.

          Viel Erfolg weiterhin!

          Hauke

        • #565
          Klaus Major
          Administrator

            Eine andere Möglichkeit, die “pre/openstack” Handler nur im Mainstack ausführen zu lassen, ist die, diese Handler im Skript der ersten Karte des Mainstacks zu packen!

            Dadurch werden sie trotzdem von der Engine abgearbeitet, aber Substacks bleiben ruhig 🙂

            Gruß

            Klaus

          • #583
            hauke
            Administrator

              Vielen Dank, Klaus, für Deine hilfreiche Ergänzung!

          Ansicht von 3 Antwort-Themen
          • Du musst angemeldet sein, um auf dieses Thema antworten zu können.