Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di Mosfet
    Registrato dal
    Jul 2002
    Messaggi
    124

    [VB6] Formattazione Euro durante digitazione

    Come da oggetto vorrei formattare un campo in euro durante la digitazione. Ho provato una ricerca ma i vari post non fanno al caso mio.

    In particolare vorrei:

    inibire la digitazione di caratteri non ammessi (lettere)
    fare in modo che ci sia solo una virgola (quella che separa i decimali)
    i punti non ammessi

    Riesco a controllarlo dopo la digitazione, ma mi interesserebbe fare il controllo proprio durante la digitazione da parte dell'utente?

    E' possibile? Qualcuno può aiutarmi?

    Grazie 1000
    "L'entropia di Windows aumenta con funzione esponenziale dal giorno della sua installazione".

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    devi gestire l'evento keypress, ti ritorna il valore ascii del tasto premuto con il quale fare le tue verifiche.
    Ans.

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Mosfet, le domande relative ai linguaggi Visual Basic, VB.NET, VBA (per Access, Excel, ...) e i linguaggi Microsoft per il .NET Framework vengono trattati nell'apposito forum: Visual Basic e .Net Framework.
    In futuro, poni in quel forum le tue domande relative ai linguaggi citati.

    Questa discussione la sposto io.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Utente di HTML.it L'avatar di Mosfet
    Registrato dal
    Jul 2002
    Messaggi
    124
    scusate!
    "L'entropia di Windows aumenta con funzione esponenziale dal giorno della sua installazione".

  5. #5
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563

    Re: [VB6] Formattazione Euro durante digitazione

    Originariamente inviato da Mosfet
    Come da oggetto vorrei formattare un campo in euro durante la digitazione. Ho provato una ricerca ma i vari post non fanno al caso mio.

    In particolare vorrei:

    inibire la digitazione di caratteri non ammessi (lettere)
    fare in modo che ci sia solo una virgola (quella che separa i decimali)
    i punti non ammessi

    Riesco a controllarlo dopo la digitazione, ma mi interesserebbe fare il controllo proprio durante la digitazione da parte dell'utente?

    E' possibile? Qualcuno può aiutarmi?

    Grazie 1000

    Eh, una cosa difficile. Io faccio cosi, magari ti può esser e utile

    codice:
    private sub text1_lostfocus()
     if not isnumeric(me.text1.text) then me.text1.text = "0"
     text1.text=replace(text1.text,".",",")
    end sub

  6. #6
    Ciao.

    Guarda questo codice:

    codice:
    ' * Gestione dei dati digitati riguardanti l'importo della fattura
    Private Sub txtImporto_KeyPress(KeyAscii As Integer)
       Select Case KeyAscii
          Case 0 To 31, 44, 48 To 57    ' Caratteri di controllo, virgola e numerici
             ' dati accettati
          Case Else
             KeyAscii = 0
       End Select
    End Sub
    Credo faccia ampiamente al caso tuo perché permette solo l'inserimento di numeri, della virgola e la pressione di altri tasti di controllo (es. Backspace, Canc ecc.).

    Appena la casella di testo perde il focus, potresti formattare il testo mediante:

    codice:
    txtImporto.Text = Format(txtImporto.Text, "###,##0.00")
    Fammi sapere.

    Giulio C. - Roma

  7. #7
    Utente di HTML.it L'avatar di Mosfet
    Registrato dal
    Jul 2002
    Messaggi
    124
    Grazie a tutti. Provo i vs suggerimenti subito.
    "L'entropia di Windows aumenta con funzione esponenziale dal giorno della sua installazione".

  8. #8
    Utente di HTML.it L'avatar di Mosfet
    Registrato dal
    Jul 2002
    Messaggi
    124
    però permette anche l'inserimento di due virgole e di + di due decimali dopo la virgola!
    "L'entropia di Windows aumenta con funzione esponenziale dal giorno della sua installazione".

  9. #9
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Ciao, se hai voglia di darti un'occhiata alle regular expression, ti conviene usare quelle, altrimenti ti posto una piccola funzione, l'ho provata sul campo..e sembra che funzia (è buttata giù adesso e pertanto ci sara' da perfezionarla).
    codice:
    Public Function CheckDigit(ByVal KeyAscii As Integer, txt As TextBox, Optional numDec As Integer = -1) As Integer
        Dim keyVal As Integer
        Dim posV As Integer
        keyVal = 0
        Select Case KeyAscii
            Case 48 To 57 'numeri da 0 a 9
                keyVal = KeyAscii
            Case 44, 46  'virgola e punto
                'controlla se sono ammessi decimali...
                If Not numDec = 0 Then
                    'controlla che già non ci sia una virgola
                    If InStr(txt.Text, ",") = 0 Then
                        'per evitare che la virgola non sia il primo carattere digitato
                        If txt.SelStart > 0 Then
                            'controlla che se il primo carattere è il "-" la virgola non può essere il secondo carattere
                            If Not (Left(txt.Text, 1) = "-" And txt.SelStart = 1) Then
                                If KeyAscii = 46 Then 'se un punto lo cambia in virgola (questo per usare il tastierino numerico e usare il punto per la virgola)
                                    keyVal = 44
                                Else
                                    keyVal = KeyAscii
                                End If
                            End If
                        End If
                    End If
                End If
            Case 45 'il meno..per imputare importi negativi
                If InStr(txt.Text, "-") = 0 Then
                    If txt.SelStart = 0 Then 'deve essere il primo carattere
                        keyVal = KeyAscii
                    End If
                End If
            Case 8 'tasto backspace
                '************************
                'controllare se c'è una virgola e cancellando il carattere vada a finire in posizioni sbagliate es. ,45 oppure -,45
                '************************
                keyVal = KeyAscii
        End Select
        If (numDec >= 0) And ((keyVal >= 48) Or (keyVal = 44)) Then
            posV = InStr(txt.Text, ",")
            If posV > 0 Then
                If Len(Mid(txt.Text, posV + 1)) >= numDec Then
                    keyVal = 0
                End If
            ElseIf keyVal = 44 Then
                posV = txt.SelStart
                If Len(Mid(txt.Text, posV + 1)) >= numDec Then
                    txt.Text = Left$(txt.Text, posV + numDec)
                    txt.SelStart = posV
                End If
            End If
        End If
        CheckDigit = keyVal
    End Function
    i parametri da passare sono:
    - il codice asci del tasto premuto
    - il nome della textBox
    - opzionale, quanti decimali vuoi (di default non c'è limite)
    va richiamata nell'evento KeyPress della TextBox dove immetti i numeri:
    codice:
    Private Sub Text1_KeyPress(KeyAscii As Integer)
        KeyAscii = CheckDigit(KeyAscii, Text1, 2)
    End Sub
    Sicuramente c'è una parte da ultimare...ed è quella che ti ho commentato nel caso in cui si preme il tasto BackSpace. Lascio a te il compito di ultimarla..
    Jupy

  10. #10
    Utente di HTML.it L'avatar di Mosfet
    Registrato dal
    Jul 2002
    Messaggi
    124
    ottimo! sembra funzionare bene!

    grazie molte Jupy64
    "L'entropia di Windows aumenta con funzione esponenziale dal giorno della sua installazione".

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.