Startseite › Foren › Deutsches LiveCode-Forum › Zahlenformat in Field
Schlagwörter: Zahlenformat
- Dieses Thema hat 3 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 3 Jahren, 9 Monaten von Gue..
-
AutorBeiträge
-
-
November 13, 2020 um 00:54 Uhr #24294
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.
-
November 13, 2020 um 14:27 Uhr #24308
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ß!
-
November 13, 2020 um 22:07 Uhr #24348
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?
-
-
Dezember 5, 2020 um 22:58 Uhr #24983
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?
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.