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
      Verwalter

      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.