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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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.