Variablen auf unterschiedlichen Cards verwenden

Startseite Foren Deutsches LiveCode-Forum Variablen auf unterschiedlichen Cards verwenden

Ansicht von 2 Antwort-Themen
  • Autor
    Beiträge
    • #4737
      horest
      Teilnehmer

        Guten Abend zusammen,

        ich bin mal dem aktuellen, politischen Aufruf “Jeder sollte programmieren können..!” gefolgt und versuche mich gerade mit großem Interesse in LiveCode. Aufmerksam geworden auf LiveCode bin ich beim Stöbern im EDV-Regal bei Thalia. Dort bin ich über das wohl bisher einzige deutschsprachige Buch über LiveCode gestolpert und war direkt überrascht, dass es multiplattformfähig und zudem kostenlos ist. Am meisten hat es mir die doch leicht zu erlernende Syntax angetan. Mal sehen, wie weit mich mein Eifer noch treiben wird, Ideen sind jedenfalls genügend vorhanden.

        Nun zu meinem Grund, warum ich hier schreibe. Über das Thema “Variablen” weiß ich schon einiges, jedoch hänge ich jetzt bei folgender Herausforderung:

        Auf der “Card 1” soll ein Name in ein Eingabefeld eingegeben werden.
        Auf der “Card 2” soll dieser Name nach dem Card-Wechsel automatisch in einem Label angezeigt werden.

        Meine Frage hierzu wäre: Wo, also an welcher Stelle deklariere ich die Variable “VorName”, wann wird diese “gefüllt” und welcher Befehl fügt diesen Inhalt der Variable nach dem Card-Wechsel in das Label?

        Über einen kleinen Denkanstoß würde ich mich sehr freuen 🙂

        Grüße,
        Jens

      • #4741
        Klaus Major
        Administrator

          Hallo Jens,

          willkommen im Forum!

          Du musst die Variable als GLOBAL deklarieren. Dann kann sie in allen geöffneten Stacks genutzt werden. Das geht so, ich nehme Dein Beispiel:
          Auf der Karte “card 1” (bitte gewöhne Dir in deinem eigenen interesse an, aussagekräftige Namen für LC Objecte zu verwenden!) gibt es einen button, der die Variable füllt, vielleicht “getarnt” als “Weiter” button, verstehst Du? Hier prüfen wir auch, ob der blöde User auch wirklich etwas in das Feld eingegeben hat!

          on mouseup
            ## Das kleine g vorne im Namen gibt diese Variable sofort als GLOBAL zu erkennen!
            ## Ist aber nur ein Vorschlag ;-)
            global gVorName
            put fld "Eingabe" into tName
          
             ## user hat noch nichts eingegeben, also gibt es einen dezenten Hinweis 
             ## und wir gehen noch nicht zur nächsten Karte weiter
            if tName = EMPTY then
              answer "Bitte einen Namen eingeben!"
              exit mouseup
            end if
          
            ## User hat einen Namen eigeben, we füllen die GLOBALE Variable damit 
            ## und auch schon das LABEL auf Karte "card 2"
            put tName into gVorName
            put tName into fld "Dein Labelfeldname hier..." of cd "Card 2"
          
            ## So, alle Vorbereitungen getroffen, nun geht es weiter:
            go cd "Card 2"
          end mouseup

          Soweit klar?

          Die Variable gVorName ist nun überall verfügbar, Du musst nur immer angeben, daß Du diese Variabel benutzen möchtest. Blödes Beispiel: ein weiterer Knopf in Deinem Stack namens “wie heisse ich?”

          on mouseup
            global gVorName
            answer "Du heisst" && gVorName & ", Du Eierkopp!"
          end mouseup

          Blödes Beispiel wie gesagt, verdeutlicht aber hoffentlich das Prinzip der Verwendung von GLOBALEN Variablen.

          Liebe Grüße

          Klaus

        • #4742
          horest
          Teilnehmer

            Hallo Klaus,

            herzlichen Dank für Deine Hilfe, es funktioniert jetzt 🙂
            Ich konnte jetzt sogar schon nachvollziehen, wo mein Fehler gelegen hat.
            An Deinen Rat für die ordentliche Benennung von Objekten werde ich mich halten, das macht das Ganze hinterher leichter nachvollziehbar und verständlicher.

            Beste Grüße,
            Jens

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