Haushaltsbuch

Startseite Foren Deutsches LiveCode-Forum Haushaltsbuch

Schlagwörter: 

Ansicht von 13 Antwort-Themen
  • Autor
    Beiträge
    • #19301
      Oliver122
      Teilnehmer

        Hallo zusammen,

        kann mir jemand sagen warum folgendes nicht funktioniert:

        on returnInField
        if “leer” is in the name of the target then
        put target after gKosten
        end if
        put gKosten into fld “display”
        set the itemDelimiter to “+”
        put the value of gKosten into fld “display”

        end returnInField

        Es gibt mehrere Felder “leer” die addiert werden soll und die Summe soll im Feld Display ausgegeben werden. Es kommt keine Fehlermeldung, er zeigt aber nur die einzelnen Eingaben an. Auch wenn ich aus put target: put (“target”&”+”) mache geht es nicht.
        Ich habe es auch mit einer repeat with Schleife versucht. Nichts klappt. Entweder kommt keine Fehlermeldung oder er stört sich an die Zeile mit value.

        Ich hoffe ihr könnt mir helfen.

      • #19304
        GerryS
        Teilnehmer

          Hallo Oliver122,

          mit dem target (Überprüfen oder wie das heißt) habe ich noch nicht probiert. Hast du zufällig das neue Buch, dann schaue mal auf Seite 244 nach. Vielleicht kannst du damit was anfangen? Da ist die “if-Zeile” etwas anders dargestellt.

          Ich bin auch ein blutiger Anfänger von LiveCode.
          Gruß GerryS

        • #19306
          Klaus Major
          Administrator

            Hi Gerry,

            bitte packe Deine Skirpts in die CODE Tags bei der Eingabe:
            1. Skript hier reinkopieren
            2. Skript markieren
            3. Auf CODE hier über dem Eingabefeld klicken, dann bleibt die Formatierung erhalten
            und man kann das wesentlich besser lesen!

            OK, here we go:
            1. Ist gKosten als GLOBAL oder LOKAL definiert?
            2. Was genau steht in gKosten drin?
            3. VALUE funktioniert nur mit einem “Ausdruck” wie value(“10 + 1”) -> 11
            4. Daher Frage 2, siehe auch 5!
            5. the target -> field “name des feldes” aber NICHT dessen Inhalt!
            6. Du hast wirklich mehrere Objekte mit dem selben Namen -> leer?
            Das schreit nach Ärger! 🙂
            7. In dem Fall besser durchnumerieren (leer_1, leer_2 etc.),
            dann kannst Du immer noch checken:

            ...
            if the short name of the target begins with "leer" then
            ...

            8. Dein “returninfield” Handler liegt im Kartenskript, richtig?

            Gruß

            Klaus

          • #19307
            Oliver122
            Teilnehmer

              Hallo zusammen,

              ich habe tagelang versucht und nichts klappte. Jetzt habe ich es gelöst. Es ist mein ersten eigenes Projekt.

              Danke aber für eure Hilfe

              Gelöst habe ich es so:

              on returnInField
              put 0 into gKosten
              repeat with x = 1 to 24
              if fld (“leer”&x)>0 then
              add fld (“leer”&x)to gKosten
              else
              put 0&” €” into fld “display”
              end if
              put gKosten&” €” into fld “display”
              if empty is in fld (“leer”&x) then
              end if
              end repeat
              end returnInField

            • #19308
              Oliver122
              Teilnehmer

                Hallo an Klaus

                Ja alle Eingabefelder heißen “leer” aber mit einer Nummer dahinter,
                also “leer1”, “leer2″….

              • #19309
                Klaus Major
                Administrator

                  Hi Oliver,

                  ist das so schwer mit den CODE Tags?

                  Bitte sei doch nicht so geizig mit Leerzeichen, die erhöhen durchaus die Lesbarkeit! 🙂
                  Wozu soll diese IF Abfrage dienen? Die ist irgendwie nutzlos und ich würde sie auch anders schreiben:

                  ...
                  if fld fld ("leer"& x) = EMPTY then
                  ...

                  Fragen, Fragen, Fragen, aber ohne die kann ich keine vernünftige Hilfestellung geben!
                  Bis auf 6. ind 7. sind meine obigen Fragen immer noch offen.

                  Gruß

                  Klaus

                • #19310
                  Oliver122
                  Teilnehmer

                    Hallo Klaus,

                    ja empty ist nutzlus. Ich hatte da nur was ausprobiert und dann wieder gelöscht, nur die Zeile vergessen. Aktuell ist das Skript jetzt so und funktioniert auch:

                    on dropdown
                    if “button” is in the target and “drop” is in the name of the target then

                    set the label of the target to the selection of the target

                    end if

                    end dropdown

                    on returnInField

                    put 0 into gKosten

                    repeat with x = 1 to 24

                    if fld (“leer”&x)>0 then

                    add fld (“leer”&x)to gKosten

                    else

                    put 0&” €” into fld “display”

                    end if

                    put gKosten&” €” into fld “display”

                    end repeat

                    end returnInField

                    Vor dem “leer” Feldern sind Dropdown Menüs, wo Kostenarten ausgesucht werden können.

                  • #19312
                    Oliver122
                    Teilnehmer

                      gKosten ist nicht Global. Dort werden nur die einzelnen Werte zwischengespeichert und im Feld Summe, summiert ausgegeben.

                    • #19318
                      Klaus Major
                      Administrator

                        CODE Tags? Kein Bock?
                        Ein Hauch Mitarbeit ist hier schon von Nöten…

                        Aber was bitte ist “dropdown”? Das ist ja kein LC Befehl.
                        Wie und wann rufst Du das auf? Bei Deinen “Dropdown” Menübuttons?
                        Warum kein “on menupick” Handler? Der ist doch eingebaut bzw.
                        brauchen gar nicht geskriptet zu werden, da z.B. ein “Option Menü” Button
                        automatisch sein LABEL ändert, wenn der User ein Menuitem davon auswählt.
                        Kann es sein, daß Du es Dir etwas zu kompliziert machst? 🙂

                        Hinweis:

                        on returnInField
                           put 0 into gKosten
                           repeat with x = 1 to 24
                              if fld ("leer" & x) > 0 then
                                 add fld ("leer" & x)to gKosten
                              else
                                 put 0 && "€" into fld "display"
                              end if
                              put gKosten && "€" into fld "display"
                           end repeat
                        end returnInField

                        Effektiver ist es, am Ende nur EINMAL das Feld “display” zu füllen:

                        on returnInField
                           put 0 into gKosten
                           repeat with x = 1 to 24
                              if fld ("leer" & x) > 0 then
                                 add fld ("leer" & x) to gKosten
                              end if
                           end repeat
                        
                           ## Wenn alle Felder leer waren, steht in gKosten ja immer noch 0, 
                           ## daher reicht diese einmalige Zeile hier völlig aus!
                           put gKosten &" €" into fld "display"
                        end returnInField

                        Hinweis:
                        Doppeltes && fügt zwei Strings mit einem Leerzeichen dazwischen zusammen:
                        “eins” & “zwei” -> einszwei
                        “eins” && “zwei” -> eins zwei

                      • #19324
                        Oliver122
                        Teilnehmer

                          Hallo Klaus,

                          ich verstehe leider nicht ganz was dir an meinen Angaben fehlte.
                          Sorry liegt vermutlich an mir.

                          Kann sein, dass es effektivere Wege gibt. Ich bin ja noch am Anfang.
                          on Dropdown wird aufgerufen, wenn ich auf den Knopf mit dem Dropdown Menü klicke.

                        • #19325
                          Klaus Major
                          Administrator

                            Erstelle doch einfach mal ein “Option Menü”, oder was Du hier benutzt hast, da kannst Du OHNE Skript direkt einen Eintrag wählen und der wird auch sofort angezeigt.
                            Daher verstehe ich z.B. den Sinn von Deinem “dropdown” Skript nicht.

                            An Anworten warte ich noch auf:
                            2. Was genau steht in gKosten drin?
                            3. VALUE funktioniert nur mit einem “Ausdruck” wie value(“10 + 1”) -> 11
                            Hat sich er ja glücklicherweise erledigt.
                            8. Dein “returninfield” Handler liegt im Kartenskript, richtig?

                            Und was genau funktioniert bei diesem Skript nicht?

                            on returnInField
                               put 0 into gKosten
                               repeat with x = 1 to 24
                                  if fld ("leer" & x) > 0 then
                                     add fld ("leer" & x) to gKosten
                                  end if
                               end repeat
                            
                               ## Wenn alle Felder leer waren, steht in gKosten ja immer noch 0, 
                               ## daher reicht diese einmalige Zeile hier völlig aus!
                               put gKosten &" €" into fld "display"
                            end returnInField

                            Das MUSS funktionieren! Hast Du es einmal ausprobiert?

                          • #19326
                            Oliver122
                            Teilnehmer

                              Hi

                              das Option Menü probiere ich später mal
                              und zu 8 ja es ist im Kartenskriot.

                              Die Sache funktioniert jetzt auch. Das hatte ich oben auch geschrieben.

                              Aber danke für deine Hilfe.

                            • #19327
                              Klaus Major
                              Administrator

                                Hallo Oliver,

                                Die Sache funktioniert jetzt auch. Das hatte ich oben auch geschrieben.

                                oh, pardon, das habe ich wohl irgendwie übersehen.
                                Ich denke mal, das Problem lag bei dem “value”.

                                Wünsche noch einen schönen Restsonntag!

                                Gruß

                                Klaus

                              • #19328
                                Oliver122
                                Teilnehmer

                                  Ja und danke nochmal.
                                  value war auch das Problem, auch wenn ich noch nicht so echt verstehe warum.

                                  Aber das ist im Moment egal. Wenn ich den Befehl mal brauche, kann ich ja immer noch schauen.

                                  Dir auch einen schönen Sonntag

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