Aktuelles Bild in globales Array speichern.

Startseite Foren Deutsches LiveCode-Forum Aktuelles Bild in globales Array speichern.

Ansicht von 19 Antwort-Themen
  • Autor
    Beiträge
    • #14207
      albin0
      Teilnehmer

      Hallo Zusammen,

      ich versuche ja gerade eine kleine Galerie zu schreiben und hänge mal wieder an einer Stelle.

      Auf der Card sind ein Bild „aus Array“ in einem Bildobjekt „img id 1027“, ein Button „auswBtn“ und ein Datagrid mit Bildern. Je nachdem welches Bild der User aus dem Grid anklickt, wird der Dateiname von „img id 1027“ neu gesetzt und das gewählte Bild angezeigt.
      Auf der letzten Karte sollen die ausgewählten Bilder nochmal in klein „img id 1042-1052“ erscheinen.

      Ich möchte nun, jedes mal wenn ein User den Button „auswBtn“ betätigt, den filename von diesem Bildobjekt „id 1027“ der Reihe nach in einem globalen Array speichern und auf einem letzten Screen anderen Bildobjekten zuweisen. Wenn das Bild schon mal ausgewählt wurde soll ein Hinweis erscheinen.

      Ich habe das jetzt mit folgendem Code realisiert, möchte das Ganze aber automatisch in einer Schleife haben.
      auswBtn:

      on mouseup
         global gAuswahl
         put filename of img id 1027 into gAuswahl[1]
         if filename of img id 1042 of card saveScreen = gAuswahl[1] then
            answer "Dieses Bild ist schon ausgewählt." 
         else
            set the filename of img id 1042 of card saveScreen to gAuswahl[1]
         end if
      end mouseup

      Ich hoffe ihr konntet mir folgen.

      Bisher klappt das ja ganz gut, allerdings eben immer nur mit einem Bild, deswegen gern die Schleife.

      Grüße Tobias

    • #14209
      Klaus Major
      Verwalter

      Hi Tobias,

      ein paar wichtige Tips:
      Bitte gewöhn Dir ein paar Sachen an, wird Dir in der zukunft sicher zugute kommen!
      1. Properties mit THE ansprechen
      -> THE filename of img xyz
      -> THE height of img 2

      2. Strings (also Eingennamen etc.) IMMER in Anführungszeichen setzen -> … of cd „saveScreen“
      Auch wenn es im Moment gut klappt, ich habe festgestellt, daß die Engine mit jeder neuen Version etwas weniger tolerant ist, was „saloppe“ (nicht „offizielle“) Syntax angeht.

      3. Um Deine Bilder nicht „blind“ ansprechen zu müssen, solltest Du dir ein Namensschema ausdenken, in dem Nummern involviert sind, besonders, wenn du sie wie hier in einem Loop ansprechen willst.
      img „bild_1“, „bild_2“ etc.
      Wichtig ist auch der UNTERSTRICH, da wir auf diese Weise mit dem ITEMDELIMITER arbeiten können und somit die Nummer in dem Namen schnell herauslesen können bei Bedarf.

      Leider ist mir noch nicht ganz klar, was Du hier genau machen möchtest.

      Auf jeden Fall solltest Du Bilder nur EINMAL in den Stack laden, dann kannst Du BUTTONS verwenden (dessen ICON Property auf die entsprechenden Bilder IDs setzen!), um die Bilder so oft anzuzeigen wie benötigt, OHNE daß Du Kopien der Bilder verwenden musst!

      Datenredundanz = höherer RAM Verbrauch!

      Gruß

      Klaus

    • #14210
      Klaus Major
      Verwalter

      Auf der letzten Karte sollen die ausgewählten Bilder nochmal in klein „img id 1042-1052“ erscheinen.

      Haben die Bilder wirklich durchgehende IDs?
      Dann geht sowas:

      ...
      repeat with i = 1042 to 1052
        ## Nun mach was mit -> img ID i
      end repeat
      ...

      Besser aber mit durchnumerierten Bildern, deren LAYER auf der Karte ist nicht wichtig!

      ...
      repeat with i = 1 to 10
        ## Nun mach was mit -> img ("dasbild_" & i)
      end repeat
      ...
    • #14211
      albin0
      Teilnehmer

      Hallo Klaus,

      schön dich zu lesen. Also vorweg, löse dich von dem Gedanken, dass es eine App für alle, möglichst kompatibel, responsive und performant sein soll.

      Die App soll ausschließlich auf einem einzigen Tablet in einer Grundschule laufen. Die Kinder sollen von den geladenen Bildern 10 stk auswählen. Diese Auswahl der Bilder (Array) und der Vorname des Kindes soll anschließend in einem Textfile gespeichert werden.

      Ansonsten werde ich deine Vorschläge natürlich berücksichtigen und zukünftig auf die korrekte Syntax achten. 😉

      Ich bin jetzt schon mal froh das ich
      1. Bilder auslesen kann
      2. Bilder aus einem Array auch anzeigen kann. (Leider noch nicht in einem scrollbaren Grid)
      3. Zwischen den Bildern hin und her springen kann.
      4. Ein Bild auswählen kann
      5. Einen Bildpfad speichern und wieder abrufen kann.
      6. die globalen Variablen deklarieren und wiederfinden kann.

      Probleme habe ich nach wie vor bei:
      1. Schleifen sinnvoll nutzen um ein Array zu füllen
      2. Ein Datengrid automatisch mit den Bildern zu füllen
      3. Die Formatierung eines Datengrids

      Ich hab hier zum Verständnis mal ein kleines Video von der App wie sie jetzt ist.

      Das gefällt mir schon super, nur würde ich gerne mehrere Bilder auswählen können und eben auch die Auswahl entsprechend anzeigen und in das text file legen.
      Sowie die kleinen Bilder jeweils in Grids anzeigen, weil die halt scrollbar sind. Aktuell muss ich für 4 Bilder eine extra Karte machen und das nervt.

      Thank you for your patience

      kind regards Tobias

    • #14212
      Klaus Major
      Verwalter

      Hi Tobias,

      Also vorweg, löse dich von dem Gedanken, dass es eine App für alle, möglichst kompatibel, responsive und performant sein soll.
      Die App soll ausschließlich auf einem einzigen Tablet in einer Grundschule laufen.

      das versetehe ich schon, ist saber keine Grund, nicht trotzdem effektiv zu arbeiten. Das kommt Dir ja bei späteren Projekten nur zu Gute!
      Ausserdem überschätze nicht die Kapazitäten eines Tablets.
      Eine JPG Datei ist vielleicht < 1 MB, aber nur die Datei!
      Entpackt im RAM können die bis zu 10 oder 15 MB groß sein.
      Das mal 10 mal eventuell noch mal 3 und schon sind gut 300 MB vom kärglichen RAM belegt im Tablet.

      Probleme habe ich nach wie vor bei:
      1. Schleifen sinnvoll nutzen um ein Array zu füllen
      2. Ein Datengrid automatisch mit den Bildern zu füllen
      3. Die Formatierung eines Datengrids

      Zu 1. wie gesagt, hier hilft eine clevere Namensgebung enorm!
      Zu 2 und 3, Datagrids sind die komplexesten Objekte in LC!
      Hier vielleicht gar nciht notwenig, weil wir ja nur ein „Grid“ für 10 Bilder benötigen. Dnke 10 GROUPpierte Buttons reichen hier schon.

      Nochmal zu ICONS in Buttons:
      Es gibt die ICONGRAVITY Property für Buttons, siehe Reiter ICON für den Button.
      Diese Property regelt, wie/an welcher Stelle das Bild im Button dargestellt wird.
      Neu hier ist die Einstellung -> resize
      Unbedingt mal ausprobieren, dadurch wird das Bild, egal wie groß es im Original ist, in den Button „gepresst“, ohne das wir extra „Miniaturen“ der Bilder anfertigen müssten! Wie gut die skalierten Bilder im Button aussehen, regelt die Property „resizequaltiy“ der BILDER!

      Hinweis:
      Mit gedrückter SHIFT-Taste kanst Du Objekte „proportional“ skalieren!
      Wichtig, damit in den Buttons die Bilder nicht unproportional verzerrt dargestellt werden.

      Bitte mal ausprobieren, denke, das wird Dir gefallen und sicher hilfreich sein.

      Gruß

      Klaus

    • #14213
      Klaus Major
      Verwalter

      Und bitte auch Deine alten Prostings ansehen.

    • #14214
      albin0
      Teilnehmer

      das versetehe ich schon, ist saber keine Grund, nicht trotzdem effektiv zu arbeiten. Das kommt Dir ja bei späteren Projekten nur zu Gute!
      Ausserdem überschätze nicht die Kapazitäten eines Tablets.
      Eine JPG Datei ist vielleicht < 1 MB, aber nur die Datei!
      Entpackt im RAM können die bis zu 10 oder 15 MB groß sein.
      Das mal 10 mal eventuell noch mal 3 und schon sind gut 300 MB vom kärglichen RAM belegt im Tablet.

      Da hast du natürlich völlig Recht und ich möchte auch nicht liederlich erscheinen. Das habe ich auch schon live festgestellt als ich in einer anderen Testversion versucht habe die Skalierung der Bilder innerhalb der App anzupassen. Das hat zwar geklappt aber enorme Ressourcen benötigt, teilweise haben größere Bilder eine halbe Minute gebraucht um korrekt angezeigt zu werden.

      Zu 1. wie gesagt, hier hilft eine clevere Namensgebung enorm!
      Zu 2 und 3, Datagrids sind die komplexesten Objekte in LC!
      Hier vielleicht gar nicht notwendig, weil wir ja nur ein „Grid“ für 10 Bilder benötigen. Denke 10 gruppierte Buttons reichen hier schon.

      Ich denke ich verstehe deinen Ansatz, aber ich habe mich vermutlich schlecht ausgedrückt. Die zehn Buttons schau ich mir auf jeden Fall für die Auswertung, sprich die letzte Seite an. Allerdings hab ich vermutlich vorher das Problem ein Grid nutzen zu müssen. Die Quelle der Bilder ist ein Ordner der leicht 150 Bilder enthalten kann und alle sollen klein angezeigt werden, weshalb ich bisher auf mehrere Cards gesetzt habe.

      Da ich aber aufgrund des Seitenverhältnisses des Vollbildes maximal 5-6 Thumbnails auf eine Karte bringen kann, müsste ich um die 20-25 Karten mit je 5-6 Thubnails bauen. Da klickt sich keiner durch. Deswegen dachte ich ich lade den Ordnerinhalt in ein scrollbares grid mit einer Spalte und je nachdem auf welche Reihe der User klickt, das Bild dieser Zelle groß angezeigt wird.

      Ich kann die Bilder leider auch nicht durchnummerieren, die sollen Ihre original Namen behalten so wie sie aus der Kamera kommen. 🙁

      Vielen Dank erstmal bis hier, die Buttons schau ich mir jetzt mal an.

      Ich tüftele weiter…

      Grüße Tobias

    • #14215
      Klaus Major
      Verwalter

      Ach so, ja, hatte das mit den 10 Bildern wohl falsch verstanden.

    • #14216
      Torsten
      Teilnehmer

      Kann man nicht die Buttons mit den Bildern in eine Group setzen und diese dann scrollbar machen?
      siehe hier: http://lessons.livecode.com/m/4071/l/44421-how-to-create-a-scrolling-group-using-the-improved-graphics-architecture

      Oder mal in den Sample Stackls nach „Humble Screenshot“ suche, der hat auch eine Art Gallery für die Screenshots gemacht mit verkleinerten Bildern. Die Art kann man vielleicht übernehmen?

    • #14218
      Klaus Major
      Verwalter

      Sicher geht auch eine scrollbare Gruppe von Buttons, aber Monsieur haben das hier wohl überlesen:

      Die Quelle der Bilder ist ein Ordner der leicht 150 Bilder enthalten kann

      Da würden wir dann doch lieber ein Datagrid die ganze Arbeit machen lassen! 😀

    • #14222
      Torsten
      Teilnehmer

      Ok, vielleicht kann dann dieses Video helfen? Hier zeigt der LC-Chef persönlich, wie man das Datagrid mit Bildern füllt 🙂
      Using a Data Grid to Display Images: https://www.youtube.com/watch?v=eGXBSdhLevg

    • #14230
      albin0
      Teilnehmer

      Huhu Klaus und Torsten,

      Vielen Dank erstmal das Ihr euch die Arbeit macht und antwortet.

      Also ich werde mir das Video mal ansehen, allerdings hab ich bis morgen erstmal Rechnerverbot auferlegt bekommen. ?

      Die Geschichte mit den gruppierten Buttons ist übrigens die beste Lösung für die letzte Seite wo die ausgewählten Bilder nochmal klein zu sehen sind.

      Die Vorbereitung des Grids mit anschließender dynamischer Befüllung wird wohl bei mir noch ein bisschen dauern. Sobald ich da weiter bin, lass ich euch es wissen.

      Merci und frohe Ostern in die Runde

      Grüße Tobias

    • #14304
      albin0
      Teilnehmer

      Huhu,

      ich habe das DataGrid automatisch befüllt. Funktioniert aktuell leider nur auf dem Desktop. Für Android hab ich es noch nicht geschafft. Sieht so aus:

         global gAllPics
         global theImageFolder
         global gCount
         put files("C:/Users/JessiLi/Desktop/Kinder/Bilder") into gAllPics
         put "C:/Users/JessiLi/Desktop/kinder/Bilder/" into theImageFolder
         
         get the number of lines of gAllPics
         put it into gCount
         
         put 1 into i
         put 1 into n
         repeat for gCount times
            put theImageFolder & line i of gAllPics into theDataA[n]["Image URL"]
            add 1 to i
            add 1 to n
         end repeat

      Ich weiß es sieht wüst aus, aber es funktioniert erstmal. Leider hab ich noch keine Ahnung was „theDataA[n]“ genau ist, ich vermute eine Reihe im Grid. Ich hab mir das mal so aus dem Data Grid Sampler, zu finden in den LC Lessons, zusammen gebastelt.

      Eine Frage hätte ich jetzt noch zu was anderem.
      Angenommen ich habe einen Button „auswählen“, immer wenn ich den drücke soll er mir den aktuellen Namen, der ja durch die Navigation bereits bekannt ist, des großen Bildes in ein Array speichern. Im Anschluss möchte ich eine Liste mit zehn ausgewählten Bildern.

      Wie geht das am Besten?

      Ich habe es noch nicht geschafft einen Button sinnvoll mit einem repeat zu verknüpfen.

      Also in etwa so, Achtung verm. kein Livecode:

      put 1 into i
      if button „auswählenBTN“ of THE card „gallery1“ is pressed then
      put the filename of image id 1027 into line i of gAuswahlArray
      add 1 to i
      end if

      Wenn ich die schleife in den Button also innerhalb des on mouseup lege kommt logischerweise nur müll raus.

      Ich habe echt keine Ideen mehr, normal müsste auch noch ein if verschachtelt werden welches die Warnung bei 10 ausgewählten Bildern raushaut.

      DANKE vorweg

      Tada Tobias

    • #14306
      Klaus Major
      Verwalter

      Hi Tobias,

      put files("C:/Users/JessiLi/Desktop/Kinder/Bilder") into gAllPics
      put "C:/Users/JessiLi/Desktop/kinder/Bilder/" into theImageFolder

      nun, da es unter Android keine Harddisk C: o.ä. gibt, es gibt da eigentich überhaupt kein Dateisystem wie auf dem Desktop, wird das auch nie auf Android funktionieren.

      Leider hab ich noch keine Ahnung was „theDataA[n]“ genau ist, ich vermute eine Reihe im Grid.

      Datagrid vom Typ FORM akzeptieren nur ARRAYs als Inhalt -> the dgdata of grp xy
      Und genau wie i in Deinem Beispiel ist N hier auch nur ein Zähler, mit dem die Keys des Arrays generiert werden und der hoch gezählt wird.

      Angenommen ich habe einen Button „auswählen“, immer wenn ich den drücke soll er mir den aktuellen Namen, der ja durch die Navigation bereits bekannt ist, des großen Bildes in ein Array speichern. Im Anschluss möchte ich eine Liste mit zehn ausgewählten Bildern.
      Wie geht das am Besten?
      Ich habe es noch nicht geschafft einen Button sinnvoll mit einem repeat zu verknüpfen.

      Sorry, verstehe nur Bahnhof!? Wann und wo soll die Maus gedrückt werden?

      Und ja, Dein Scriptschnipsel ist definitiv kein Livecode. 😎

      Gruß

      Klaus

    • #14347
      albin0
      Teilnehmer

      Hallo Klaus,

      also die Pfade hab ich natürlich entsprechend auf put files (specialfolderpath("external documents")) into gAllPics geändert. Bis gestern Abend hatte ich aber noch einen Denkfehler drin, bzw. hat das Befüllen nicht funktioniert weil hier immer noch die einzelnen Desktoppfade im Grid hinterlegt waren. Nachdem ich die Zellen wieder leer gemacht hatte lief es dann.

      Ich hab ja „n“ selbst als Zähler vergeben somit war mir das auch bewusst. Allerdings hab ich kein Element im Grid oder im behavior script gefunden das die Bezeichnung „theDataA“ trägt.

      Zum Bahnhof: 😉
      Also unter dem großen Bild ist ein Button, wenn man den drückt, soll der aktuelle absolute Bildpfad also bspw.:
      /storage/emulated/0/Android/data/com.meine-app.bildauswahl/files/DSC01526.jpg
      in einem Array gespeichert werden.
      Anschließend ändere ich über die Navigation den Bildpfad, sprich ich lasse mir mit:
      set the filename of img id 3506 to theImageFolder & line x of gAllPics
      ein anderes Bild groß anzeigen.
      Den Pfad dieses Bildes möchte ich jetzt auch dem Array hinzufügen wenn ich den Button drücke.

      Also was ich sehe, kann ich auswählen. Was ich sehe und schon ausgewählt ist kann ich nicht mehr auswählen.
      Button „auswählen“

      on mouseup   
         global gAuswahl
            put filename of THE img "DAS GROSSE BILD" into gAuswahl[<strong>1</strong>]
         if filename of img "KLEINES BILD AUF DER LETZTEN KARTE" of THE card saveScreen = gAuswahl[<strong>1</strong>] then
            answer "Dieses Bild ist schon ausgewählt." 
         else
            answer "Bild gewählt"
            set the filename of THE img "KLEINES BILD AUF DER LETZTEN KARTE" of THE card saveScreen to gAuswahl[<strong>1</strong>]
         end if
      end mouseup

      JA im Moment geht das eben immer nur für ein Bild wenn ich den Button drücke. Deswegen hab ich auch den Zähler fett gemacht. Wenn ich den jetzt durch ne Variable ersetze, überschreibt er mir bei jede push einfach nur den ersten Eintrag. Baue ich ein repeat Konstrukt in den Button schreibt er mir einfach 10 mal das erste Bild rein. Ich bräuchte sowas wie „Immer wenn… mach das…“

      Vielen Dank für deine Mühe, ich neige dazu die Dinge unnötig kompliziert zu umschreiben…

      Grüße Tobias

    • #14351
      Klaus Major
      Verwalter

      Hi Tobias,

      OK:

      Allerdings hab ich kein Element im Grid oder im behavior script gefunden das die Bezeichnung „theDataA“ trägt.

      theDataA ist nur ein beliebiger Name für die Variable, die das ARRAY für -> the dgdata of grp xyz enthält. Der Name ist völlig egal, wie eigentlich jeder Name für eine Variable.

      set the filename of img id 3506 to theImageFolder & line x of gAllPics

      GANZ WICHTIG! Klammern setzten beim Zusammensetzen von Objek und/oder Dateinamen!
      -> set the filename of img id 3506 to (theImageFolder & line x of gAllPics)
      Damit zwingen wir LC zuerst den „Ausdruck“ in Klammern aufzulösen, so daß ein gültigher Dateipfad entsteht.

      Und echte und aussagekrätige NAMEN für Objekte sind wirklich wesentlich einprägsamer als -> trallala ID 4711 😎

      Sowas:

      ...
      ## put 2 into i 
      ## Oder innerhalb eines REPEAT Loops
      put "blabla" into fld "einfeld mit Nummer" & i
      ...

      Gibt einen Error, daß es kein Objekt mit dem Namen -> einfeld mit Nummer
      gibt. Tut es auch nicht, aber:

      put „blabla“ into fld („einfeld mit Nummer“ & i)
      ..
      funktioniert, Sofern wir wirklich ein Feld namens -> einfeld mit Nummer2
      auf der Karte haben. So arbeitet LC halt und wir sollten dem Rechnung tragen.

      Hier hast Du mich wohl falsch verstanden, Du sollst nur PROPERTIES mit THE ansprechen:

      on mouseup   
         global gAuswahl
         put THE filename of img "DAS GROSSE BILD" into gAuswahl
         if THE filename of img "KLEINES BILD AUF DER LETZTEN KARTE" of card "saveScreen" = gAuswahl then
            answer "Dieses Bild ist schon ausgewählt." 
         else
            answer "Bild gewählt"
            set the filename of img "KLEINES BILD AUF DER LETZTEN KARTE" of card "saveScreen" to gAuswahl[<strong>1</strong>]
         end if
      end mouseup

      🙂

      Hier würde ich vielleicht KEIN Array nehmen, sondern eine einfache Variable mit 10 Zeilen Inhalt, ein Dateipfad pro Zeile. Vielleicht so:

      on mouseup   
         global gAuswahl
         
         put THE filename of img "DAS GROSSE BILD" into tAuswahl
         ## Checken, ob Bild schon mal ausgewählt wurde:
         if lineoffset(tAuswahl,gAuswahl) <> 0  then
            answer "Dieses Bild ist schon ausgewählt." 
            
            ## Ich vermeide verschachtelte IF THEN Klauseln wie der Teufel das Weihwasser! 8-)
            ## So ist alles wesentlich überschaubarer und man muss nicht nachzählen ob wir wirklich 
            ## auch für jedes IF ein END IF am Ende getippt haben!
            exit mouseup
         end if
         
         answer "Bild gewählt"
         
         ## Nun an gAuswahl anhängen:
         if gAuswahl <> EMPTY then
            ## Wir fügen tAuswahl als NEUE Zeile an!
            put CR before tAuswahl
         end if
         put tAuswahl after gAuswahl
         
         ## Hier vielleicht prüfen, ob schon 10 Bilder gewählt wurden
         ## if the num of lines of gAuswahl = 10 then
         ## tu was in dem Fall
         ## end if   
      end mouseup

      Dann später „on preopencard“ der Karte „savescreen“ in einem LOOP alle Dateinamen für die Bilder auf der Karte „en bloc“ setzen. Capisce?

      Gruß

      Klaus

    • #14353
      albin0
      Teilnehmer

      Herrlich wie einfach das doch gehen kann, Danke vielmals Klaus.

      Und wieder geht der Pokal raus an dich.

      Um hier nochmal meine dilettantischen Gehversuche mit LC zu dokumentieren, meine Rangehensweise mit einem extra Textfile =)
      on openCard:

      
      global x
      add 1 to x
      clear URL ("file:" & specialFolderPath("documents") & "/check.txt")
      

      Button:

      on mouseUp
         global gAuswahl
         global x
         if x = 11 then
            answer "Es wurden zehn Bilder ausgewählt"
         else
            put filename of img id 1027 into line x of URL ("file:" & specialFolderPath("documents") & "/check.txt")
            put URL ("file:" & specialFolderPath("documents") & "/check.txt") into field "fieldTest"
         end if
         add 1 to x
      end mouseUp

      Geil oder 😀

      Das hat funktioniert, allerdings ist deine Variante wesentlich eleganter.

      Vielen Dank nochmal

      Tobias

    • #14355
      Klaus Major
      Verwalter

      Sauber! 🙂

      Aber das hier kannst du „billiger“ haben:

      ...
      clear URL ("file:" & specialFolderPath("documents") & "/check.txt")
      ...

      Ich musste erst CLEAR nachschlagen, diese Verwendung mit URL war mir bis dato nicht bekannt :-D, aber das hier ist auch irgendwie eingängiger bzw. aussagekräftiger:

      ...
      delete file (specialFolderPath("documents") & "/check.txt")
      ...
    • #14357
      albin0
      Teilnehmer

      Huhu Klaus,

      Ich musste erst CLEAR nachschlagen

      naja, manchmal bin ich einfach kreativ.

      Ich probiere lieber rum anstatt einmal zu lesen… 😐
      So mach ich mir gerne mal die Arbeit schwer.

      Ich bin für heute erstmal mega happy. Jetzt fehlt nur noch das abwählen der Bilder, dass bekomme ich dank deiner Hilfe bisher auch noch hin.

      Mit besten Grüßen

      Tobias

    • #14401
      albin0
      Teilnehmer

      Super toll…

      Hier nochmal meine Fortschritte. Ich kann nun Bilder wählen und auch wieder abwählen.

      Bild wählen:

      on mouseup   
         global gAuswahl
      
         put filename of img id 3506 into tAuswahl
         ## Checken, ob Bild schon mal ausgewählt wurde:
         if lineoffset(tAuswahl,gAuswahl) <> 0  then
            answer "Dieses Bild ist schon ausgewählt." 
            exit mouseup
         end if
         ## Hier prüfen wir ob die Variable schon 10 Zeilen enthält
         if the num of lines of gAuswahl = 10 then
            answer "Sie können maximal 10 Bilder pro Set wählen."
         else
            ## Nun an gAuswahl anhängen:
            show image "check"
            ## Wenns nicht leer ist packt er noch ein return (CR) davor
            if gAuswahl <> EMPTY then
               ## Wir fügen tAuswahl als NEUE Zeile an!
               put CR before tAuswahl
            end if
            ## Jetzt packt er die Zeile "tAuswahl" rein
            put tAuswahl after gAuswahl
         end if
         
      end mouseup

      Bild abwählen:

      on mouseup   
         global gAuswahl
         
         put filename of img id 3506 into tAuswahl
         # Ist das aktuelle Bild in der Variable
         put lineoffset(tAuswahl,gAuswahl) into tLine
         if tLine = 0 then #wenn nein
            answer "Dieses Bild ist nicht ausgewählt"
         else #wenn ja
            # wimpel verstecken
            hide image "check"
            # Zeile leer machen
            put empty into item 1 of line tLine of gAuswahl
            # gAuswahl neu sortieren ohne Leerzeilen
            filter gAuswahl without EMPTY
         end if
         #put gAuswahl into field tTest
      end mouseup

      Vielleicht hilft es ja dem ein oder anderen…

      Vielen Dank Klaus, ich bin somit fertig 😀

      Grüße Tobias

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