Pulldown-Menü bitte um Hilfe

Startseite Foren Deutsches LiveCode-Forum Pulldown-Menü bitte um Hilfe

Schlagwörter: ,

Ansicht von 11 Antwort-Themen
  • Autor
    Beiträge
    • #38323
      Josch
      Teilnehmer

        Hallo und Guten Morgen,
        Ich bin absoluter Anfänger und habe in Zukunft vieleicht Fragen.
        Ich habe ein Pulldownmenü was prima funktioniert. Nun möchte ich die Auswahl auf der selben Card in einem anderen Textfeld anzeigen und auflisten lassen!
        Wie geht dass ???
        Meine Versuche mit dem put-befehl scheitern.

        on menuPick tMenuItem
        switch tMenuItem
        case „Arbeitszimmer“
        go to card „ArbeitszimmerAuswahl“
        break
        case „Badezimmer“
        go to card „BadAuswahl“
        break
        case „Balkon“
        go to card „BalkonAuswahl“
        break
        case „Esszimmer“
        go to card „EsszimmerAuswahl“
        break
        case „Keller“
        go to card „KellerAuswahl“
        break
        case „Kinderzimmer“
        go to card „KinderzimmerAuswahl“
        break
        case „Küche“
        go to card „KücheAuswahl“
        break
        case „Schlafzimmer“
        go to card „SchlafzimmerAuswahl“
        break
        case „Wohnzimmer“
        go to card „WohnzimmerAuswahl“
        break
        case „Benutzerdefiniert“
        go to card „BenutzerdefiniertAuswahl“
        break
        end switch
        end menuPick

        Vielen Dank im Voraus für eure Hilfe.

      • #38325
        Klaus Major
        Administrator

          Hi Josh,

          willkommen im Forum!

          Bin mir nicht ganz sicher, was Du genau machen möchtest…
          Auf Karte X ist Dein Pulldownmenu
          Wenn der user einen Menüpunkt daraus auwählt, soll zur entsprechenden Karte gegangen
          und der gewählte Menüpunkt soll in ein Feld auf Karte X geschrieben werden?

          Das ginge so:

          on menuPick tMenuItem
            ## Das funktioniert, da wir uns auf Karte X befinden:
            put tMenuItem into fld "Dein Feld auf Karte X hier"
            ## dann geht es "normal weiter:
            switch tMenuItem
             case "Arbeitszimmer"
             ...

          Ist es das, was Du meinst?
          Wenn nicht, bitte näher erklären.

          Gruß

          Klaus

        • #38327
          Klaus Major
          Administrator

            Noch ein paar Ergänzungen…

            Du kannst ein Feld von überall mit Text füllen, solange die „Adresse“ stimmt!
            Bist Du z.B. auf einer anderen Karte:
            put the_text into fld "das feld" OF CD "name der karte mit dem Feld"
            Oder gar in einem anderen Stack:
            put the_text into fld "das feld" OF CD "name der karte mit dem Feld" OF STack "der stack mit der karte mit dem feld"
            Es klingt, als wolltest Du eine Art „History“ in dem Feld aufbauen,
            dann würde PUT XXX INTO ja jedes Mal den Inhalt des Feldes überschreiben.

            Wenn Du da etwas hinzufügen möchtest, geht das natürlich auch, mit PUT XXX AFTER…
            Um leere Zeilen zu vermeiden, sollten wir überprüfen, ob das Feld noch leer ist:

            ...
            if fld "history" = EMPTY then
              put tItemName into fld "history"
            else
              ## Es steht schon was im Feld, also machen wir einen neue Zeile:
              put CR & tItemName AFTER fld "history"
            end if
            ...
          • #38329
            Klaus Major
            Administrator

              Noch ein Hinweis:
              Nach dem Einfügen von Code, diesen bitte wieder markieren und oben auf CODE klicken, dann bleibt die Formatierung mit Einrückungen etc. erhalten.

              on menuPick tMenuItem
                 switch tMenuItem
                    case "Arbeitszimmer"
                       go to card "ArbeitszimmerAuswahl"
                       break
                    case "Badezimmer"
                       go to card "BadAuswahl"
                       break
                    case "Balkon"
                       go to card "BalkonAuswahl"
                       break
                    case "Esszimmer"
                       go to card "EsszimmerAuswahl"
                       break
                    case "Keller"
                       go to card "KellerAuswahl"
                       break
                    case "Kinderzimmer"
                       go to card "KinderzimmerAuswahl"
                       break
                    case "Küche"
                       go to card "KücheAuswahl"
                       break
                    case "Schlafzimmer"
                       go to card "SchlafzimmerAuswahl"
                       break
                    case "Wohnzimmer"
                       go to card "WohnzimmerAuswahl"
                       break
                    case "Benutzerdefiniert"
                       go to card "BenutzerdefiniertAuswahl"
                       break
                 end switch
              end menuPick
            • #38357
              Torsten
              Teilnehmer

                Hi Josch,

                ich habe mal ein kleines Video erstellt, um zu zeigen, wie man ein ganz einfaches Pulldown-Menü zur Navigation erstellt und noch ein paar kleins Tipps für Groups, Backgrounds und das Setzen von Fensternamen: https://www.youtube.com/watch?v=kthULnhE06M

                Hier das Skript aus dem Button:

                on menuPick pChosenItem
                   
                   go to card pChosenItem
                   put "Du bist auf Karte" && pChosenItem into field "Title"
                   set the title of the current stack to pChosenItem
                   
                end menuPick

                Happy Skripting
                Torsten

              • #38359
                Josch
                Teilnehmer

                  Hallo zusammen,
                  vielen Dank erst einmal für die ausfürliche Hilfe.
                  Ich werde eure Tips lesen, begreifen und testen. Werde mich später mit einem Feedback zurück melden.

                • #38361
                  Josch
                  Teilnehmer

                    So, nun bin ich ein kleines Stück weiter… habe geschrieben und getestes . aber nicht alles verstanden.
                    Nun werden mir die Räume in einem seperaten Feld angezeigt, auch in einer Liste (untereinander)
                    Mein Problem ist das nur ein ausgewählter Raum angezeigt wird unzwar „doppelt“

                    Beispiel: Arbeitszimmer
                    Arbeitszimmer

                    Ich benötige aber eine Liste aller zuvor gewählten Räume

                    Beispiel: Arbeitszimmer
                    Badezimmer
                    Balkon
                    Esszimmer

                    Für euch sicher kein Problem, für mich eine (noch) unlösbare Aufgabe.

                    on menuPick tMenuItem
                    put tMenuItem into Field „RaumListe“
                    if Field „RaumListe“=EMPTY then
                    put tMenuItem into Field „RaumListe“
                    else
                    put CR & tMenuItem AFTER Field „RaumListe“
                    end if
                    switch tMenuItem
                    case „Arbeitszimmer“
                    go to card „ArbeitszimmerAuswahl“
                    break
                    case „Badezimmer“
                    go to card „BadAuswahl“
                    break
                    case „Balkon“
                    go to card „BalkonAuswahl“
                    break

                    Vielen Dank schon jetzt, für Rat und Tipps
                    Josch

                  • #38363
                    Klaus Major
                    Administrator

                      Hi Josh,

                      mit Deinem Skript überschreibst Du das Feld jedes mal zuerst mit dem Menuitem, dann noch einmal, nachdem Du geprüft hast, ob das Feld leer ist, was es nciht ist, da Du soeben das Menuitem reingeschrieben hast! 🙂

                      on menuPick tMenuItem
                       ## Diese Zeile weg und es kommt Freude auf! :-)
                       ## put tMenuItem into Field "RaumListe"
                      
                        ## ERST prüfen, DANN reinschreiben!
                        if Field "RaumListe"=EMPTY then
                         put tMenuItem into Field "RaumListe"
                        else
                         put CR & tMenuItem AFTER Field "RaumListe"
                       end if
                      ...
                    • #38378
                      Josch
                      Teilnehmer

                        Guten Abend Herr Major,
                        vielen Dank für Deine (Ihre) Hilfe.
                        Es klappt wunderbar, bin total happy!
                        Morgen geht es weiter mit programmieren – da liegen noch viele Steine im Weg. 🙂

                      • #38380
                        Klaus Major
                        Administrator

                          Gern geschehen und wir duzen uns hier. 🙂

                          Morgen geht es weiter mit programmieren – da liegen noch viele Steine im Weg.

                          OK, ich bin hier, wenn Du Hilfe brauchst!

                        • #38405
                          Josch
                          Teilnehmer

                            Hallo Klaus,
                            meine Steine die im Weg liegen werden immer mehr 🙂
                            da ich überhaupt nicht der englischen Sprache mächtig bin, fällt es mir schwer bei so viel Hilfe die richtige zu finden.

                            da es mit dem pulldown-Menü und der auflistung wunderbar klappt möchte ich weiter kommen und lernen.

                            1. Bei einer erneuten Auswahl aus dem pulldown-Menü soll der Text kein zweites mal in der „RaumListe“ erscheinen, besser wäre keine doppelte Auswahl im pulldown-Menü möglich.

                            2. Wenn ich diese Card erneut (Programm erneut starte) öffne soll der Inhalt vom Feld „RaumListe“ (Contents) leer sein.

                            Wie soll das gehen, das kann Livecode sicher nicht [lach laut]
                            Befehl: empty, clean, clear … keine Ahnung

                            Ich bedanke mich schon jetzt für deine Hilfe!

                            P.S. Gibt es eigentlich die Möglichkeit sich in deutsch besser mit der Materie zu beschäftigen?

                          • #38407
                            Klaus Major
                            Administrator

                              Hi Josh,

                              leider gibt es so gut wie keine Literatur über LC in deutsch, sorry.
                              Zu Deinen Problemen.

                              1. Hier ist es einfacher, zu prüfen, ob ein Menuitem schon im Feld drin ist.
                              Das erledigen wir mit LINEOFFSET, das liefert uns die Zeilennummer (oder 0)
                              in der sich ein String in einem Feld/Variable befindet.

                              on menuPick tMenuItem
                                ## Wir prüfen als erstes, ob tMenuItem in dem Feld befindet, dann EXITen wir in dem Fall.
                                ## Also wir verlassen den Handler:
                                if lineoffset(tMenuItem,fld "RaumListe") <> 0 then
                                   exit menupick
                                end if
                              
                                ## tMenuItem nicht im Feld, also weiter im Text:
                                ## ERST prüfen, DANN reinschreiben!
                                if Field "RaumListe"=EMPTY then
                                 put tMenuItem into Field "RaumListe"
                                else
                                 put CR & tMenuItem AFTER Field "RaumListe"
                               end if
                              ...

                              2. Im Stackskript im „openstack“ Handler diese Zeile hinzufügen.
                              Bei Bedarf einen „on openstack“ Handler hinzufügen, wenn noch nicht vorhanden:

                              on openstack
                                ## Dein Kram hier, sofern vorhanden...
                                ## ...
                                put EMPTY into fld "RaumListe" of cd 1
                                ## Oder auf welcher Karte sich das Feld genau befindet:
                              end openstack

                              Gruß

                              Klaus

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