on openStack und Substack

Startseite Foren Deutsches LiveCode-Forum on openStack und Substack

Schlagwörter: 

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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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.