Zahlenformat in Field

Startseite Foren Deutsches LiveCode-Forum Zahlenformat in Field

Schlagwörter: 

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.