Problem bei Daten auslesen vom Dategrid

Startseite Foren Deutsches LiveCode-Forum Problem bei Daten auslesen vom Dategrid

Ansicht von 4 Antwort-Themen
  • Autor
    Beiträge
    • #3372
      RehW
      Teilnehmer

        Hallo zusammen,

        ich habe ein Problem beim Auslesen eines Datagrids. Folgenden Code habe ich in der Gruppe des Datagrid:

        on mouseUp
           --aktuelle Zeile auslesen
          put the dgHilitedLines of group "Anzeige" into aktZeile
          put line aktZeile of the dgText of group "Anzeige" into zwZeile
          set the itemDelimiter to tab
          --aktuelle Nummer ermitteln
          put item 1 of zwZeile into aktNr
          --zur Karte 2 wechseln
          go to Card "card2"
        end mouseUp

        Der Wechsel zur Card 2 funktioniert, aber die Variable aktNr enthält keinen Wert.
        Hier noch das Script von Card 2:

        on openCard
          set the hilitedItem of group "navimenu" to "card2"
           if aktNr <> ""  then
              put aktNr into field "Testfeld"
           else
              put "nichts ausgewählt" into field Testfeld
           end if   
        end openCard

        Habe es mit “”,0 und Empty probiert, Variable ist leer und das Feld “Testfeld” zeigt mir nur “aktNr” an. Auch die Navigationsbar wird nicht geändert. Vielleicht weiss jemand was ich falsch mache.

        Gruss Rene

      • #3374
        Klaus Major
        Administrator

          Hallo Rene,

          sieht so aus, als müsstest Du diese Variable als GLOBAL deklarieren, damit sie in jedem Handler auf jeder Karte in jedem Stack auch genutzt werden kann!

          Das musst Du dann in jedem Skript am Anfang tun:

          global aktNr
          
          on mouseUp
             --aktuelle Zeile auslesen
            put the dgHilitedLines of group "Anzeige" into aktZeile
            put line aktZeile of the dgText of group "Anzeige" into zwZeile
            set the itemDelimiter to tab
            --aktuelle Nummer ermitteln
            put item 1 of zwZeile into aktNr
            --zur Karte 2 wechseln
            go to Card "card2"
          end mouseUp

          Und auch hier:

          global aktNr
          
          on openCard
            set the hilitedItem of group "navimenu" to "card2"
             if aktNr <> ""  then
                put aktNr into field "Testfeld"
             else
                put "nichts ausgewählt" into field Testfeld
             end if   
          end openCard

          Nun, kennt jeder der beiden Handler diese Variable und alles sollte klappen wie gewünscht.

          Da du diese Variable nicht als GLOBAL deklariert hast, hatte sie nur die “Lebensdauer” des Handlers, sprich, am Ende Deiner Handler wurde sie wieder “vergessen” (RAM wurde freigegeben) von der Engine.

          Gruß

          Klaus

        • #3390
          RehW
          Teilnehmer

            Hallo Klaus,

            ich habe einen Stack mit 7 Cards und die Variable im Stack als global definiert. Sie sollte also in allen 7 Cards bekannt sein.

            Gruss Rene

          • #3391
            Klaus Major
            Administrator

              Hallo Rene,

              globale Variablen müssen in Livecode in jedem Skript deklariert werden, in dem sie benutzt werden!
              Das mag in anderen Entwicklungsumgebungen anders sein, aber in LC ist das so.

              Gruß

              Klaus

            • #3394
              RehW
              Teilnehmer

                Hallo Klaus,

                danke für die Info. Stimmt ich kenne es von anderen Entwicklungsumgebungen nur so das sie einmal global definiert in allen anderen Unterprogrammen oder Funktionen bekannt sind.

                Gruss Rene

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