Italian [B4J] Inserire numeri come fa un pos

Discussion in 'Italian Forum' started by moore_it, Nov 7, 2018.

  1. moore_it

    moore_it Active Member Licensed User

    Ciao a tutti,

    vorrei creare una custom view partendo magari da un textfield che mi permetta di inserire i numeri come fa un pos o come fa pay-pal cioè partendo da destra e inserendo i numeri popolano la stringa verso sinistra mantenendo l'eventuale punto o virgola dei decimali.

    Per ora grazie se avete ideee o suggerimenti attendo con pazienza e nel frattempo studio un metodo.
     
  2. LucaMs

    LucaMs Expert Licensed User

    Inizia da prove con un semplice layout con una EditText, prima di tentare la CV.

    Se inserisci il testo a runtime è ovviamente semplice; lo è meno quando sia l'utente ad inserirlo.

    Non dovrai fare altro che sfruttare l'evento TextChanged, che ti restituisce il vecchio testo ed il nuovo digitato dall'utente.

    Dovrai usare anche una variabile booleana globale che indichi la "fase", ovvero se la TextChanged scatti perché l'utente ha digitato o perché tu stesso modifichi il testo inserito dall'utente.

    Mi sa che faccio prima a scrivere il codice che a spiegarlo :p
     
  3. moore_it

    moore_it Active Member Licensed User

    Ciao,
    guarda sto facendo di tutto ma l'evento textchange mi riporta la stringa completa e diventa difficile capire dove ci si trova
    Ho trovato una bella classe che tramite jReflector mi da il valore della digitazione fatta ma anche là la gestione diventa difficile perchè bisognerebbe gestire tutti i tasti non alfanumerici (enter freccette ecc)

    Mah!
     
  4. LucaMs

    LucaMs Expert Licensed User

    Accendo sigaretta, poi faccio una provola e, se decente, la allego
     
  5. moore_it

    moore_it Active Member Licensed User

    e vai di paglia !
     
  6. moore_it

    moore_it Active Member Licensed User

    Grazie
     
  7. LucaMs

    LucaMs Expert Licensed User

    Molto più semplice di quanto pensassi:

    Code:
    Sub EditText1_TextChanged (Old As String, New As String)
       EditText1.SelectionStart = 
    0
     
  8. moore_it

    moore_it Active Member Licensed User

    Infatti troppo semplice.

    vorrei fare una cosa così :

    .00

    L'utente digita 1 e avremo

    .01

    L'utente digita 0 e avremo

    .10

    altri due digitazioni di 0 e avremo

    10.00

    non so spero di essermi spiegato

    Ciao grazie per il tempo perso
     
  9. LucaMs

    LucaMs Expert Licensed User

    In effetti, non ho capito (non sei tu che non ti sei spiegato, sono io che ho un gran sonno :D).

    digita 1 -> .01
    digita 0 -> .10
    digita due volte 0 -> 10.00

    è così?

    Come fai a stablire se la cifra digitata debba essere un decimale o un'unità?
     
  10. moore_it

    moore_it Active Member Licensed User

    l'idea è dare al programmatore la possibilità nella classe di dire quante cifre di decimali ha il numero come proma cosa
    quindi costruire la stringa iniziale con il punto o con la virgola e gli zero in conseguenza dei decimali scelti
    seconda cosa si potrebbe dire che il numero è composto da 10 cifre quindi sapere che l'array di caratteri è composto così
    0000000.00 se due decimali
    quindi digito e partendo sempre dal carattere + grande torno indietro sapendo che nr decimali + 1 c'è il divisore
     
  11. LucaMs

    LucaMs Expert Licensed User

    Si ma non puoi sapere se, quando digita 5, questo vada inserito tra i decimali (e non sai nemmeno se sia la prima cifra decimale, l'ultima o una centrale, se impostasse 3 o più decimali) oppure a sinistra, come unità, decine, centinaia...

    Quale sia lo scopo di tutto questo, poi... boh :D
     
  12. moore_it

    moore_it Active Member Licensed User

    in teoria ...
    la digitazione è sempre alla fine non puoi muoverti nel campo quindi il carattere è sempre l'ultimo
    solo la cancellazione toglie numeri che scalerebbero a dx

    Voglio creare un input numerico per valute
    quello che fa pay-pal quando inserisci pagamenti
     
  13. LucaMs

    LucaMs Expert Licensed User

    Non ho idea di come si inserisca un importo con PayPal (su app o sul web, poi?) ma, a parte che allora dovresti impedire che l'utente possa spostare il cursore dove vuole, se è come dici, ovvero solo cancellare le ultime cifre inserite, la EditText nella modalità normale inserisce le cifre normalmente da sx a dx, con la singola riga proposta in #7 fa il contrario.

    Al limite potresti pensare di usare due EditText, una per la parte intera e una per la decimale.
     
  14. moore_it

    moore_it Active Member Licensed User

    MMMM mi sa che creo una customview con un canvas, intercetto le digitazioni e mi gestisco un'array che poi visualizzerò.
    Ti faccio sapere.

    Grazie per ora
    Ciao
     
  15. Star-Dust

    Star-Dust Expert Licensed User

    Code:
    Sub Process_Globals
        
    Private fx As JFX
        
    Private MainForm As Form
        
    Private TextField1 As TextField
    End Sub

    Sub AppStart (Form1 As Form, Args() As String)
        MainForm = Form1
        MainForm.RootPane.LoadLayout(
    "Layout1"'Load the layout file.
        MainForm.Show
        
        TextField1.Style=
    "-fx-aligment: right"
    End Sub

    'Return true to allow the default exceptions handler to handle the uncaught exception.
    Sub Application_Error (Error As Exception, StackTrace As StringAs Boolean
        
    Return True
    End Sub

    Sub TextField1_TextChanged (Old As String, New As String)
        TextField1.SetSelection(
    0,0)
    End Sub
     
  16. moore_it

    moore_it Active Member Licensed User

    Grazie. Testato ma non è ciò che voglio ottenere.
     
  17. Star-Dust

    Star-Dust Expert Licensed User

    Mi spiace, ma cosa volevi ottenere?
     
  18. moore_it

    moore_it Active Member Licensed User

    Ciao,

    hai presente come si paga con pay-pal ?
     
  19. Star-Dust

    Star-Dust Expert Licensed User

    Che ti appare 0,00 e pian piano si riempiono i campi a modo di registratore di cassa?
     
    Last edited: Nov 9, 2018 at 2:51 PM
  20. moore_it

    moore_it Active Member Licensed User

Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice