Zahlenformat in Field

Startseite Foren Deutsches LiveCode-Forum Zahlenformat in Field

Schlagwörter: 

  • Dieses Thema hat 3 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 2 Jahre von Gue..
Ansicht von 2 Antwort-Themen
  • Autor
    Beiträge
    • #24294
      Gue.
      Teilnehmer

      Eine weitere Frage eines LC Neulings:

      Folgendes Problem:
      Mitten im Bildschirm meiner Handy-App ist ein ausfüllbares Field. Wenn ich dieses Field antippe, öffnet sich meine Tastatur, welche das Field verdeckt.

      Ziel:
      Wenn das Field angetippt wird, soll sich eine nummerische Tastatur (1 – 9, 0, 000) wie bei einem Taschenrechner öffnen. Ausserdem soll die Eingabe im Format „$.$$$,00“ dargestellt werden.

      Bereits im Voraus besten Dank für eure Hilfestellung.

    • #24308
      Axwald
      Teilnehmer

      Hallo,

      „mobileSetKeyboardType“ wäre der Suchbegriff im Dictionary 😉

      The keyboard type setting takes affect the next time the keyboard is shown.

      Zur Eingabe in Feldern:
      Ich vermeide das für mobil ganz – bei mir sind alle Felder „locked“ (und können damit auf „mouseUp/ down“ reagieren), und wenn was geändert werden soll, mache ich das über „ask“ oder (bevorzugt) „mobilePick“.

      Dann habe ich auch kein Problem, das Ergebnis im gewünschten Format darzustellen (nachdem ich die Plausibilität geklärt habe).

      Zahlen formattieren geht schnell mit „format()“, das benutzt allerdings die „printf()“-Syntax aus der Linux-Welt & ist damit ähnlich benutzerfreundlich & einprägsam wie RegExp.
      In Deinem Fall würde ich das „zu Fuß“ machen:

      function makeDollar myNum
         replace "." with comma in myNum     --  ich brauch comma!
         put item 2 of myNum into myCent
         repeat until len(myCent) = 2        --  runden
            if (char -1 of myCent) >= 5 then  --  ab 5 aufrunden ...
               put 1 into myAdd
            else
               put 0 into myAdd
            end if
            delete char -1 of myCent
            add myAdd to myCent 
         end repeat
         put myCent into item 2 of myNum
         
         put 3 into myFaktor                --  Tausendertrennung
         put 6 into myStart
         repeat
            if len(myNum) > myStart then 
               put "." before char (myStart * -1) of myNum
               add myFaktor +1 to myStart
            else
               exit repeat
            end if
         end repeat
         put "$ " before myNum              --  oder was auch immer
         return myNum
      end makeDollar

      Das ist jetzt alles mit reiner String-Manipulation. (Und hat keine Plausibilitätsprüfung!)

      Denn: Ab ~15 Stellen vor dem Komma (Trillionen?) gibts in Fehler beim Runden, wenn Du „round()“ oder „format()“ benutzt – da ist irgendein Limit für Zahlen erreicht.
      Wenn Du das vermeiden willst, mußt Du „zu Fuß“ runden, wie oben.
      Keine Angst, das ist trotzdem sehr schnell – auch bei abstrus riesigen Zahlen im 1-stelligen Millisekundenbereich.

      Viel Spaß!

      • #24348
        Gue.
        Teilnehmer

        Axwald, vielen Dank für deine prompte und ausführliche Antwort; das ist sehr hilfreich.

        …finde mich im Dictionary leider nicht wirklich zurecht; hast du da einen Tipp? Gibt es ev. eine Beispielliste mit den dazu möglichen Codes?

    • #24983
      Gue.
      Teilnehmer

      Bin mit mobileSetKeyboardType „number“ leider nicht ans Ziel gelangt.

      In meinem fld steht folgender Code:

      set the numberformat to "#.00"
      set traversalOn to true
      
      on mouseDown   
         if the environment is "mobile" then 
            mobileSetKeyboardType "number"
      end if
      end mouseDown
      
      //mobileSetKeyboardType "number"
      ## oder
      //mobileSetKeyboardType "numeric"
      ## oder
      //mobileSetKeyboardType "decimal"

      Any idea?

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