Autore Topic: [RISOLTO]gestione valuta  (Letto 1132 volte)

Offline naderit

  • Grande Gambero
  • ***
  • Post: 140
    • Mostra profilo
[RISOLTO]gestione valuta
« il: 24 Aprile 2015, 22:33:47 »
Ciao a tutti dopo aver letto diverse discussioni sull'argomento sono riuscito a scrivere un piccolo codice per la gestione della valuta, ovvero inserendo un qualunque valore numerico, all'evento lostfocus() viene inserita, in automatico la virgola per indicare i centesimi.

Codice: [Seleziona]
Public Sub TextBox1_LostFocus()

Dim a As Float
a = Val(TextBox1.Text) / 100
TextBox1.text = Format$(a, "0.#0")
TextBox2.Text = Val(TextBox1.Text)

End


a questo punto vorrei utilizzare l'evento Change(), e qui mi sono bloccato........ ???  
« Ultima modifica: 26 Aprile 2015, 18:44:14 da naderit »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.725
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: gestione valuta
« Risposta #1 il: 25 Aprile 2015, 00:02:49 »
...a questo punto vorrei utilizzare l'evento Change(), e qui mi sono bloccato....

...ossia ? ???
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline naderit

  • Grande Gambero
  • ***
  • Post: 140
    • Mostra profilo
Re: gestione valuta
« Risposta #2 il: 25 Aprile 2015, 09:44:20 »
 :) ciao, forse non mi sono spiegato.. ;D. Praticamnete il codice mi restituisce 0,01 se scrivo 1 all'evento lostfocus() se inserisco 123 mi restituisce 1,23 se inserisco 1500 mi resitituisce 15,00 e cosi via, e potrebbe andare bene. Mi piacerebbe che ogni volta che digito un numero in automatico mi iserisca la virgola, ovvero considerando il valore di partenza 0,00 se inserisco 1, mi visualizza 0,01 se aggiungo 2 mi visualizza 0,12 se aggiungo 3 mi viasualizza 1,23 ovvero il dato inserito si sposta nella textbox da destra verso sinistra considerando le ultime due cifre a sinistra centesimi. Un po' come avviene nelle bilance elettroniche peso/prezzo o registratori di cassa.
spero di aver chiarito il quesito. 

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.239
  • Tonno verde
    • Mostra profilo
Re: gestione valuta
« Risposta #3 il: 25 Aprile 2015, 14:01:20 »
Quello che faceva il codice postato era palese, credo che vuott intendesse chiederti cosa volevi ottenere con il metodo Change.
Francamente formattare qualcosa durante la digitazione appare come minimo fuorviante, ti conviene inserire e basta in textbox1 e formattare solo la textbox2, così potrebbe andare bene credo:

Codice: gambas [Seleziona]
Public Sub TextBox1_Change()

  Dim a As Float
 
  a = Val(TextBox1.Text) / 100
  TextBox2.Text = Format$(a, "0.#0")   
 
End
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.725
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: gestione valuta
« Risposta #4 il: 25 Aprile 2015, 14:36:25 »
....così potrebbe andare bene credo:

...aggiungerei solo questo condizionale:
Codice: gambas [Seleziona]
Public Sub TextBox1_Change()  
  
  Dim a As Float  

   If TextBox1.Text = Null Then
     TextBox2.Text = "0"
     Return
   Endif

   .......
   .......

per evitare la sollevazione di un errore, nel caso in cui dall'utente vengano cancellate all'interno del TextBox1 tutte le cifre.
« Ultima modifica: 25 Aprile 2015, 14:40:18 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.239
  • Tonno verde
    • Mostra profilo
Re: gestione valuta
« Risposta #5 il: 25 Aprile 2015, 14:43:14 »
E già in informatica la divisione per zero non connota un grande programmatore...  :P

... ma non ottengo errore  :-\  ???  :rolleyes:

... mi rispondo da solo sono stato ingannato da vuott che con quanto precisato mi ha fatto credere...  >:( in realtà una divisione per 100 non è una divisione per zero  :mad:
« Ultima modifica: 25 Aprile 2015, 14:58:10 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.725
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: gestione valuta
« Risposta #6 il: 25 Aprile 2015, 15:39:48 »
E già in informatica la divisione per zero non connota un grande programmatore...

... ma non ottengo errore

... mi rispondo da solo sono stato ingannato da vuott che con quanto precisato mi ha fatto credere... in realtà una divisione per 100 non è una divisione per zero

Io non parlavo di divisione per zero, bensì del valore Null nella proprietà .Text del TextBox1 .   :D
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline naderit

  • Grande Gambero
  • ***
  • Post: 140
    • Mostra profilo
Re: gestione valuta
« Risposta #7 il: 25 Aprile 2015, 19:49:44 »
in risposta a Gianluigi, la textbox2 mi serviva solo verificare la riconversione del dato con Val, perchè non posso sommare numeri con virgola ma solo con punto. Certamente posso risolvere il problema con l'evento gotfocus() e poi textbox1.text = "". Esempio con la ValueBox posso definire la formatazione con type = currency ma devo sempre utilizzare il tasto virgola per spostarmi sui centesimi.   
   

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.239
  • Tonno verde
    • Mostra profilo
Re: gestione valuta
« Risposta #8 il: 25 Aprile 2015, 20:51:20 »
in risposta a Gianluigi, la textbox2 mi serviva solo verificare la riconversione del dato con Val, perchè non posso sommare numeri con virgola ma solo con punto. Certamente posso risolvere il problema con l'evento gotfocus() e poi textbox1.text = "". Esempio con la ValueBox posso definire la formatazione con type = currency ma devo sempre utilizzare il tasto virgola per spostarmi sui centesimi.      

E variarla così?

Codice: gambas [Seleziona]
Public Sub TextBox1_Change()

  Dim a As Float, s As String
   
  a = Val(TextBox1.Text) / 100
  s = Format$(a, "0.#0")     
  TextBox2.Text = Val(s)
 
End
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.725
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: gestione valuta
« Risposta #9 il: 25 Aprile 2015, 21:13:51 »
Potrebbe adottare comunque il tuo primo suggerimento, e poi applicare la funzione Val() al contenuto della TextBox2 in caso di somma:

Codice: gambas [Seleziona]
Public Sub TextBox1_Change()  
      
   TextBox2.Text = Str(TextBox1.Text / 100 )

' Esempio di somma:
   Print Val(TextBox2.Text) + 1.2
      
End
 
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.239
  • Tonno verde
    • Mostra profilo
Re: gestione valuta
« Risposta #10 il: 25 Aprile 2015, 21:27:02 »
Bel codice vuott semplice e pulito  :ok:
Però cosa il nostro amico intenda fare io non l'ho ancora capito  :)
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline naderit

  • Grande Gambero
  • ***
  • Post: 140
    • Mostra profilo
Re: gestione valuta
« Risposta #11 il: 25 Aprile 2015, 22:23:09 »
 ;D ;D ;D nulla....... evitare di usare il tasto virgola per inserire importi in euro...... sono solamente segate metali  :rolleyes: leggendo altre discussioni ho cercato di trovare una soluzione meno complicata e pulita.
il codice di Vuott non inserisce la virgola in automatico.  :)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.239
  • Tonno verde
    • Mostra profilo
Re: gestione valuta
« Risposta #12 il: 25 Aprile 2015, 22:36:15 »
Il codice di vuott, nella prima parte, fa esattamente la stessa cosa che fa il mio.
« Ultima modifica: 25 Aprile 2015, 22:37:56 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: gestione valuta
« Risposta #13 il: 25 Aprile 2015, 23:14:50 »
@ naderit
Ho letto la discussione e nel tuo post d'apertura apprendo che utilizzi due TextBox per la gestione dello stesso dato. La differenza é che la TextBox1 ti serve per l'immissione della valuta con la sua immediata trasformazione in formato editato con la virgola anteposta alle due ultime cifre del valore impostato. La TextBox2 ti serve invece per trasferirvi il valore impostato nella precedente TextBox1, trasformandovi però la virgola in punto.
Però, visto che parli di somma di valori successivi, probabilmente, detta TextBox2 ti servirà per mostrare il totale delle successive impostazioni nella TextBox1.
Se ho capito bene, puoi mantenere la virgola anche nella TextBox2.
Potresti perciò gestire, come dici tu, l'automatismo del posizionamento della virgola dentro la procedura evento TextBox1_Change, dopo però avere accertato che ciascun carattere d'immissione sia un carattere numerico. Per controllare l'input da tastiera, devi attivare l'evento KeyPress e scrivere il codice di controllo dentro la procedura-evento TextBox1_KeyPress. L'evento KeyPress viene scatenato prima dell'evento Change, quando, quindi, il carattere immesso non è ancora visibile nella TextBoox1. Il controllo singolo dei caratteri immessi ti permetterà, in caso di immissione di carattere diverso da un numero, di potere invalidare l'ultimo carattere immesso, respingendo l'immissione con l'istruzione
Codice: [Seleziona]
 Stop Event
Considerando che, per ciascuna immissione dovrai stabilire quando l'impostazione sarà  completa (per es. tasto INVIO alla fine di ciascuna impostazione: 1235,80 <INVIO>),  potresti creare un totalizzatore float per sommarvi i valori numerici completi e la somma aggiornata di volta in volta andrebbe editata (con la virgola come separatore delle cifre decimali) nella TextBox2.
Scusami se non scrivo io il codice necessario, ma lo faccio esclusivamente per non toglierti il piacere di farlo tu.
Spero di avere intuito quanto ti occorre.
 :ciao:

« Ultima modifica: 25 Aprile 2015, 23:17:50 da Picavbg »
:ciao:

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.725
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: gestione valuta
« Risposta #14 il: 26 Aprile 2015, 17:09:34 »
Allora... se ho capito quello che vuoi raggiungere, tu vuoi che:
- in un TextBox siano visualizzati i decimali sino ai centesimi separati dagli interi con una virgola e non con il punto;
- scrivendo di seguito dei numeri in quel TextBox, i nuovi numeri immessi siano posti in coda a destra spostando verso sinistra i numeri preesistenti.


Se è così, io proporrei il seguente codice:

Codice: gambas [Seleziona]
Public Sub TextBox1_Change()

    TextBox1.text = Format(Replace(TextBox1.Text, ",", Null) / 100, "0.00")
 
End
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »