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
      Verwalter

      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
      Verwalter

      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.