Startseite › Foren › Deutsches LiveCode-Forum › Kreierte btn speichern
Schlagwörter: Kreierte btn speichern
- Dieses Thema hat 15 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 3 Jahren, 10 Monaten von Klaus Major.
-
AutorBeiträge
-
-
September 18, 2020 um 23:11 Uhr #22927
Hallo zusammen,
ich habe eine neues Problem.
Mit
on erstellen if Pos = empty then put 0 into oben put 0 into x repeat with y = 10085 down to 140 step - 45 put y & return after Pos end repeat sort lines of Pos numeric speichern erstellen2 else erstellen2 end if end erstellen on erstellen2 add 1 to x put line 1 of Pos into oben delete line 1 of Pos herstellen end erstellen2 on herstellen lock screen create grp ("gruppe."&x) in grp "scrollArea" create btn "Art" in grp ("gruppe."&x) of grp "scrollArea" create btn "Löschen" in grp ("gruppe."&x) of grp "scrollArea" put "global z, Pos, Pos2" & CR & "on mouseUp" & CR & "put the top of the owner of me into Pos2" & CR & "put the short name of the owner of me into z" & CR & "loeschen" & CR & "end mouseUp" into tSkript set the script of btn "Löschen" of grp ("gruppe."&x) to tSkript put "on mouseUp" & CR & "öffnen" & CR & "end mouseUp" into tSkript2 set the script of btn "Art" of grp ("gruppe."&x) to tSkript2 set the width of btn "Art" of grp ("gruppe."&x) to 100 set the height of btn "Art" of grp ("gruppe."&x) to 40 set the left of btn "Art" of grp ("gruppe."&x) to 15 set the width of btn "Löschen" of grp ("gruppe."&x) to 100 set the height of btn "Löschen" of grp ("gruppe."&x) to 40 set the left of btn "Löschen" of grp ("gruppe."&x) to 121 set the left of grp ("gruppe."&x) to 15 set the top of grp ("gruppe."&x) to oben set the style of btn "Löschen" of grp ("gruppe."&x) to roundRect set the backgroundcolor of btn "Löschen" of grp ("gruppe."&x) to red set the style of btn "Art" of grp ("gruppe."&x) to roundRect set the backgroundcolor of btn "Art" of grp ("gruppe."&x) to green //put empty into ("vari"&x) namegeben unlock screen end herstellen
werden alle btn jetzt fehlerfrei erstellt. Das neue Problem tritt aber in der Standalone Version auf.
Jeder normale btn ist, sobald er, beim programmieren eingerichtet wird, immer da.
Das Speichern von Daten, in Feldern ist auch kein Problem, aber die kreierten btn über den create btn
sind weg, sobald das Programm geschlossen wird.Wie kann man die grp speichern und laden?
Könnt ihr mir helfen?
-
September 19, 2020 um 12:48 Uhr #22945
Hi Oliver,
hier gibt es wohl nur zwei Möglichkeiten:
1. Kopiere alles in einen neuen und unsichtbaren Stack und speichere diesen an einem Ort, wo Du Schreibrechte hast wie z.B.:
specialfolderpath(„preferences“)
specialfolderpath(„documents“)Dann beim Start Deiner App prüfen, ob es dort schon einen gespeicherten Stack gibt.
Wenn ja, diesen unsichtbar öffnen (go invisible stack xyz) und alles Benötigte wieder in Deinen Runtimestack zurückkopieren.Wenn nicht:
... put specialfolderpath("preferences") & "/karlheinz.wasauchimmer" into tDateiname if there is a file tDateiname then go invisible stack tDateiname ## Nun Deine Objekte zurück kopieren... else create invisible stack "deinedaten" set the filename of stack "deinedaten" to tDateiname save stack "deinedaten" end if ...
2. Die SPLASH SCREEN Technik:
Der eigentliche Stack wird separat Deiner Runtime hinzugefügt über -> Copy files
und die Runtime ist nur ein kleiner Stack, der besagten Stack zunächst in einen der obengenannten Ordner kopiert, öffnet und dann auch später wieder speichert.Gruß
Klaus
-
September 22, 2020 um 17:47 Uhr #23063
Hallo Klaus,
danke für deine Hilfe. Probiere das nachher mal aus.
-
Oktober 6, 2020 um 20:39 Uhr #23424
Hallo zusammen,
um das ganze zu vereinfachen, habe ich ein kleines Testprogramm gebaut. Dort kann man über einen create Button, einen anderen erstellen und ihn dann speichern.
Ich bekomme es aber nicht hin.
gespeichert wird mit folgendem code:
on mouseUp if there is a folder (specialFolderPath("documents")&"/speicherdatenhaus/hallo") then hall else create folder (specialFolderPath("documents")&"/speicherdatenhaus/hallo") hall end if end mouseUp on hall if there is not a stack "skard" then create invisible stack "skard" end if copy this card to stack "skard" save the stack "skard" as url "file:"&specialFolderPath("documents")&"/speicherdatenhaus/hallo/ttest.livecode" end hall
geladen mit:
on openStack if the environment is "mobile" then put specialFolderPath("engine") into programmPfad else put the filename of this Stack into programmPfad set the itemDelimiter to "/" delete the last item of programmPfad end if if there is a file specialFolderPath("documents")&"/speicherdatenhaus/hallo/ttest.livecode" then go invisible stack "skard" copy stack "skard" url ("file:"&specialFolderPath("documents")&"/speicherdatenhaus/hallo/ttest.livecode") to stack "Untiteled1" end if end openStack
Wenn der Stack geöffnet wird, ist der Button, in der Standaloneversion aber wieder weg.
Könnt ihr mir bitte nochmal weiterhelfen?
Danke im Voraus.
-
Oktober 6, 2020 um 21:28 Uhr #23425
Da ist Einiges im Argen…
on mouseUp ## Tipparbeit sparen! put (specialFolderPath("documents") & "/speicherdatenhaus/hallo") into tOrdner if there is NOT a folder tOrdner then create folder tOrdner end if hall end mouseUp on hall ... end hall ## Siehe unten... on openStack ## Dieser specialfolderpath funtioniert sowohl in der IDE*** als auch in der Standalone, Platform egal! ## *** Dort zeigt er auf den Ordner, in dem der aktuelle Stack liegt! ## Aber er wird hier ja gar nicht benutzt? put specialFolderPath("resources") into programmPfad ## Hier benötigen wir den DATEINAMEN, da LC nicht weiß, daß Dein Stack eigentlich "skard" heisst. put specialFolderPath("documents") & "/speicherdatenhaus/hallo/ttest.livecode" into tStack if there is a file tStack then go invisible stack tStack ## Das geht nicht, wir können keinen Stack in einen anderen kopieren! ## Was genau möchtest Du machen? Eine Karte aus dem Stack kopieren vielleicht? ## copy stack "skard" tStack to stack "Untiteled1" ??? end if end openStack
-
Oktober 6, 2020 um 22:06 Uhr #23426
Auf den zweiten Blick:
on hall ## Ich denke, das müsste so gemeint sein, oder? put specialFolderPath("documents") & "/speicherdatenhaus/hallo/ttest.livecode" into tStackAufPlatte ## Wenn wir zu einem anderen Stack gehen, sicht- oder unsichtbar, ## ist THIS Stack ein anderer, als Du jetzt denkst! :-) ## Daher merken wir uns, woher wir kommen: put the short name of this stack into tOldStack ## Stack schon mal gespeichert, also DEN auch öffnen: if there is a file tStackAufPlatte then go invisible stack tStackAufPlatte else ## Noch nie gespeichert, also Stack erstellen: create invisible stack "skard" ## So können wir einfach später SAVE schreiben: set the filename of stack "skard" to tStackAufPlatte end if ## FOCUS für THIS wieder herstellen: set the defaultstack to tOldStack copy this card to stack "skard" save stack "skard" end hall
-
Oktober 7, 2020 um 20:47 Uhr #23438
Hallo Klaus,
danke für deine Hilfe.
Zu der Frage was ich machen möchte:Es geht darum, dass die über den „create“ btn erstellten button, in der standalone Version gespeichert werden.
Diese verschwinden nämlich immer, wenn das Programm geschlossen wird.Wenn es dazu nötig ist eine card zu kopieren, dann ist das wohl der richtige Weg, aber bisher klappt es nicht.
Wenn ich nach dem Erstellen auf den meinen save btn Drücke, wird auch eine Datei ttest.livecode erstellt.
Wenn ich dann das Programm schließe und wieder öffne, ist der, über den „create“ btn erstellte button, wieder verschwunden. Aber genau der soll ja gespeichert werden. -
Oktober 8, 2020 um 15:39 Uhr #23466
Hi Oliver,
Zu der Frage was ich machen möchte:
Es geht darum, dass die über den „create“ btn erstellten button, in der standalone Version gespeichert werden. Diese verschwinden nämlich immer, wenn das Programm geschlossen wird.soweit ist mir das schon klar, aber von selber spazieren die Buttons im Stack „skard“ nicht wieder in Deinen Runtime Stack, das meine ich, Du musst also etwas dafür tun.
Du musst also die Karte aus dem Stack „skard“ wieder in deinen Runtime Stack zurückkopieren!
Wie heisst denn Dein Runtime Stack?Und hast Du Deine Karten auch benannt?
Es ist immer einfacher mit benannten Objekten zu arbeiten!So müsste das vom Prinzip her aussehen:
on openStack ## Dieser specialfolderpath funtioniert sowohl in der IDE*** als auch in der Standalone, Platform egal! ## *** Dort zeigt er auf den Ordner, in dem der aktuelle Stack liegt! ## Aber er wird hier ja gar nicht benutzt? put specialFolderPath("resources") into programmPfad ## Hier benötigen wir den DATEINAMEN, da LC nicht weiß, daß Dein Stack eigentlich "skard" heisst. ## Name des Stacks <> Dateiname des Stacks auf Platte put specialFolderPath("documents") & "/speicherdatenhaus/hallo/ttest.livecode" into tStack if there is a file tStack then go invisible stack tStack ## Das geht nicht, wir können keinen Stack in einen anderen kopieren! ## Was genau möchtest Du machen? Eine Karte aus dem Stack kopieren vielleicht? copy CARD "name der kopierten Karte" OF stack tStack to stack "Name Deines Runtime Stacks hier!" end if end openStack
-
Oktober 20, 2020 um 21:43 Uhr #23738
Hallo Klaus,
irgendwie komme ich nicht weiter.
Ich habe dir das Speichertest-Programm mal per Mail geschickt.Vielleicht komme ich ja so weiter.
Ich wäre dir wirklich sehr dankbar, wenn du dir das mal anschaust.Danke im Voraus.
-
Oktober 22, 2020 um 10:08 Uhr #23779
Hallo zusammen,
ich wäre sehr dankbar, wenn eine Lösung oder ein Hinweis auch hier gepostet werden könnte. Ich kämpfe aktuell mit dem gleichen (oder sehr ähnlichen) Problem:
Das Anlegen eines Stacks im Documents-Ordner funktioniert ebenso wie das Kopieren der zu speichernden Elemente dorthin. Was nicht funktioniert, ist das Zurückkopieren der Elemente in den Runtime-Stack, wenn die App wieder geöffnet wird. In Livecode und als .exe funktioniert alles, nur unter Android geht es nicht.
Danke und schönen Gruß
Tim -
Oktober 22, 2020 um 10:48 Uhr #23780
Hi Tim,
das wird an der Tatsache scheitern, daß auf der mobilen Platform immer nur EIN Stack zu selben Zeit geöffnet werden kann! Für Mobil empfehle ich eher die SPLASH-Screen Methode.
Da ich selber kein Handy o.ä. besitze, beziehen sich meine Vorschläge immer auf Desktop Anwendungen, wenn der Fragesteller nicht explizit MOBIL erwähnt.
Gruß
Klaus
-
Oktober 29, 2020 um 20:09 Uhr #23781
Vielen Dank für den Hinweis, Klaus. Gibt es dazu eine Anleitung? Ich habe nur diese gefunden:
http://lessons.livecode.com/m/4069/l/1276854-how-do-i-add-a-splash-screen-to-my-android-app
Das hat bei mir zunächst auch nicht funktioniert. Außerdem ist der „Resources“-Ordner soweit ich recherchiert habe, auch nur Read-Only und dann zum Speichern nicht geeignet.
-
Oktober 29, 2020 um 22:07 Uhr #23959
Hi Tim,
tut mir leid, habe Deinen Post erst heute entdeckt und freigeschaltet.
Die LC Lektion hat mit meinem Hinweis nichts zu tun, da bedeutet SPLASH Screen
etwas ganz Anderes! Ich werde versuchen am Wochenende eine Anleitung zu schreiben.Gruß
Klaus
-
November 2, 2020 um 18:45 Uhr #24037
Wer es noch nicht gesehen hat, mein Tutorial ist jetzt online:
https://www.livecode-blog.de/forums/topic/stacks-speichern-in-standalones/ -
Februar 10, 2021 um 20:52 Uhr #26494
Hi Klaus,
hat ein bisschen gedauert. Jetzt ist das Problem endlich gelöst.
Danke für deine Hilfe.Gruß Oliver
-
Februar 10, 2021 um 21:08 Uhr #26495
Super! 🙂
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.