Startseite › Foren › Deutsches LiveCode-Forum › Problem bei Daten auslesen vom Dategrid
- Dieses Thema hat 4 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 6 Jahren, 8 Monaten von RehW.
-
AutorBeiträge
-
-
Dezember 23, 2017 um 16:18 Uhr #3372
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
-
Dezember 23, 2017 um 19:14 Uhr #3374
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
-
Dezember 25, 2017 um 09:45 Uhr #3390
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
-
Dezember 25, 2017 um 13:50 Uhr #3391
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
-
Dezember 26, 2017 um 07:31 Uhr #3394
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
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.