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
              Administrator

                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
                  Administrator

                    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
                      Administrator

                        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
                          Administrator

                            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
                              Administrator

                                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
                                  Administrator

                                    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
                                      Administrator

                                        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.