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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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.