mit per Skript erstellen Objekten weiterarbeiten ..

Startseite Foren Deutsches LiveCode-Forum mit per Skript erstellen Objekten weiterarbeiten ..

Ansicht von 16 Antwort-Themen
  • Autor
    Beiträge
    • #22320
      foto2004
      Teilnehmer

      Hallo Gemeinde,

      eine Frage, wieder einmal.

      Wenn ich per Skript z. B. einen Button erstelle wie kann ich danach mit diesem Button weiterarbeiten?
      Ich meine ich kann ihn ja vorher auf der Card mit Rechtsklick nicht auswählen und dann auf edit Script klicken weil er ja zu diesem Zeitpunkt noch nicht da ist. Aber wie mache ich das, dass ich z. B. mit on mouseUp usw weiterarbeiten kann??

      LG Immanuel

    • #22322
      Torsten
      Teilnehmer

      Hi Immanuel,

      du kannst dem neuen Button einfach ein Skript zuweisen, mit

      set the script of button "Neuer Button" to InDieserVariableIstDasSkript

      Danach kannst Du dem Button z.B. einen Mausklick simulieren, in dem Du folgenden Befehl abschickst:

      send "mouseup" to button "Neuer Button"

      LG
      Torsten

    • #22324
      foto2004
      Teilnehmer

      Hallo Torsten,

      edit öffnet mir ja nur den Scripeditor. Ich möchte aber z. B. einen Button per Script erstellen (dynamisch) und der User soll auf den Bettel klicken und es soll etwas geschehen.

      So im Normalfall erstelle ich einen Butten und gehe auf den Button Rechtsklick und „Script edit“ danach mouseUp usw.

      Mein Problem; der Button existiert ja noch nicht sondern wird ja erst durch irgend eine Aktion (irgendein Klick auf irgendeinen Button) generiert. So und danach soll der User auf eben diesen frisch generierten Butten klicken und es soll wieder etwas passieren.

      LG Immanuel

      oh da habe ich zu schnell geantwortet

    • #22333
      foto2004
      Teilnehmer

      leider funktionier das nicht so.

      bei set the script of button "Neuer Button" to InDieserVariableIstDasSkript

      kommt diese Fehlermeldung:
      card „KalenderCard“: execution error at line 27 (Chunk: no such object), char 1

      hier mein Skript:

      on cre_button
         local tCount
         put 5 into tCount
         set the visible of fld"table_1" to false
         repeat tCount times
            lock screen
            if Zahl < 1 then
               put 1 into Zahl
            end if
            create btn "testButton" 
            put "testButton"&Zahl into btn_name
            put "Button "&Zahl into btn_label
            set the label of btn"testButton" to "Button "&Zahl
            set the name of btn"testButton" to btn_name
            --set the text of btn"testButton" to "Button / Feld "&Zahl
            set the left of btn btn_name to 100
            set the top of btn btn_name to 100
            unlock screen
            put 50 * Zahl into Weg
            put Zahl +1 into Zahl 
            move btn btn_name relative 0,Weg in 0.02 seconds
            put Zahl
            set the script of button "btn_name" to dasSkript
         end repeat
         put 0 into Zahl
      end cre_button
      

      nicht wundern ist nur zum lernen und testen

      LG Immanuel

    • #22336
      Klaus Major
      Verwalter

      Das obige Skript hat aber nur 26 Zeilen!
      Wo meckert LC denn nun?

      Desweiteren:
      Zahl ist nicht definiert, dito dasSkript

      Ausserdem ein MOVE über 0,02 Sekunden kann kaum ein Auge erfassen, hier wäre eventuell ein SET THE LOC … besser?

      Probiere das mal aus mit THE TEMPLATEBUTTON:
      (THE TEMPLATEXXXXX ist die Vorlage, nach der neue Objekte (create xyz) erstellt werden,
      sehr praktisch, wei man hier sehen kann)!

      on cre_button
         local tCount
         put 5 into tCount
         set the visible of fld "table_1" to false
         
         ## Hier vielleicht besser?
         put 0 into Zahl
         repeat tCount ## times
         ## TIMES kann man weglassen
            lock screen
            if Zahl < 1 then
               put 1 into Zahl
            end if
            
            ## LEERZEICHEN erhöhen die Lesbarkeit!
            put "testButton" & Zahl into btn_name
            put "Button" && Zahl into btn_label
            
            ## Zuerst ein paar Properties des TEMPLATEBUTTONs setzten:
            set the name of the templatebutton to btn_name
            set the label of the templatebutton to btn_label
            
            set the left of the templatebutton to 100
            set the top of the templatebutton to 100
            
            ## Und JETZT den Button erstellen mit den oben gesetzten Props
            create btn btn_name 
            
            unlock screen
            put 50 * Zahl into Weg
            ## put Zahl +1 into Zahl 
            ## Schneller:
            add 1 to Zahl
            
            move btn btn_name relative 0,Weg in 0.02 seconds
            put Zahl
            
            ## Wo ist dasSkript definiert?
            set the script of button btn_name to dasSkript
         end repeat
         put 0 into Zahl
         
         ## Guter Stil:
         reset the templatebutton
      end cre_button
    • #22339
      foto2004
      Teilnehmer

      bei set the script of button „btn_name“ to dasSkript

      gibt es so etwas in dieser Richtung?

      on mouseup of button"btn_name"
         
      end mouseup
    • #22340
      Klaus Major
      Verwalter

      Nein, das geht nicht, da meckert LC zu recht! Wie kommst Du darauf?
      Ein ganz normales Buttonskript ist hier gefordert:

      on mouseup
        ## tu dies
        ## mach jenes
      end mouseup
    • #22342
      foto2004
      Teilnehmer

      das heißt ich kann keine Objekte dynamisch erstellen und diese z. B. anklickbar machen?

    • #22343
      Klaus Major
      Verwalter

      Doch, das schliesst sich doch nicht aus!

      Ich verstehe Deine Bedenken nicht, wenn Du manuell einen Button erstellst und ihm ein Skript schreibst, schreibst Du doch auch nicht:

      on mouseup of btn "dieser hier"
      ...

      Sondern einfach „on mouseup…“ und LC weiß, was zu tun ist, wenn man diesen Button klickt!?

    • #22345
      foto2004
      Teilnehmer

      ja aber wenn ich den Button erst per Script erstelle ist er ja noch nicht da. Und somit kann ich ja nicht hergehen wie bei Buttons, die ich links aus den Tools raus auf die Card ziehe, und per rechtsklick / edit Script / on mouseup …… schreiben weil der Button ja noch nicht da ist.

    • #22347
      Klaus Major
      Verwalter

      Aber Du erstellst doch erst den Button (create button …) und etwas später weist Du ihm ein Skript zu, wo ist das Problem?

      ...
      ## Und JETZT den Button erstellen mit den oben gesetzten Props
      ## 1.
      create btn btn_name 
      ## JETZT IST ER DA!
            
      unlock screen
      put 50 * Zahl into Weg
      ## put Zahl +1 into Zahl 
      ## Schneller:
      add 1 to Zahl
            
      move btn btn_name relative 0,Weg in 0.02 seconds
      put Zahl
            
      ## 2.
      set the script of button btn_name to dasSkript
      ...
    • #22354
      foto2004
      Teilnehmer

      es tut mir leid aber das fress ich nicht.

      ich erstelle den Button (ja hab zum Spaß gleich 6 gemacht)

      so aber wie mache ich jetzt den Button anklickbar?

      wo kommt das „set the script of button btn_name to dasSkript“ hin?

      und was muß dann in „dasSkript“ rein?

      ich weiß ich stell mich an wie ein Bär zum tanzen aber ich kapiere es nicht.

    • #22355
      Klaus Major
      Verwalter

      Schau Dir mein Skript oben an, in dem Loop wird alles gemacht.
      Was soll Dein Button denn machen nach einem Klick?
      Dementsprechend sieht dasSkript dann aus.

      Einfaches Beispiel, wir nehmen das Skript hier:

      on mouseup
         beep
      end mouseup
      ...
      ## Dieses Skript gibt nur einen BEEP aus, aber das Prinzip sollte klar sein:
      put "on mouseup" & CR & "beep" & CR & "end mouseup" into dasSkript
      ...
      create btn btn_name
      ...
      set the script of button btn_name to dasSkript
      ...
    • #22359
      foto2004
      Teilnehmer

      Danke jetzt habe ich es gefressen. Danke für deine Geduld Klaus.

      Gute Nach für heute

    • #22360
      Klaus Major
      Verwalter

      SAUBER! 🙂

    • #22410
      foto2004
      Teilnehmer

      Entschuldigung eine Frage hätte ich noch.

      wenn ich statt dem beep was anderes mit Variablen usw machen möchte wie schreibt man das dann?

      weil so geht es nicht:

            put "on mouseup" & CR & \
                  "beep" & CR &  \ ## dass hier geht 
                  "answer Hallo "&Zahl&   CR & \ ## aber das nicht
                  "end mouseup" into dasSkript
            set the script of button btn_Cname to dasSkript
      
    • #22412
      Klaus Major
      Verwalter

      Ah, OK, das geht dann so etwas aufwendiger:

      ...
      ## Wir packen den ANSWER String in eine Variable:
      put QUOTE & ("Hallo" && Zahl) & QUOTE into answerZahl
      
      ## Dasmuss nun natürlich auch in den LOOP:
      put "on mouseup" & CR & "beep" & CR & "answer" && answerZahl &CR & "end mouseup" into dasSkript
      set the script of button btn_Cname to dasSkript
      ...
Ansicht von 16 Antwort-Themen
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.