none
clavier numerique RRS feed

  • Question

  • Bon toujours  dans mon programme, dans les form j'aimerai faire apparaitre un clavier numerique ce aui eviterai de se servir du clavier physique ....., mais j'ai qu'une vague idee de comment faire...
    samedi 5 décembre 2015 15:05

Réponses

  • La souris peut cliquer sur les touches.

    Voici une capture d'écran du PadNumerique que j'utilise dans une de mes applications:

    Pad numérique

    MouseUp etc existe certainement dans VS2008.

    'Sub pour l'entrée d'un mdp numérique avec un pad    
        'Les boutons numériques
        'On utilise un overload pour le click des boutons
        Private Sub frmPadMdp_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button0.Click, Button1.Click, Button2.Click, _
       Button3.Click, Button4.Click, Button5.Click, _
       Button6.Click, Button7.Click, Button8.Click, Button9.Click
            'Debug.Print("Button event click : " & sender.ToString)
            _TextMdp += sender.text 'Attention le text du bouton doit être correct...
            TextBox1.AppendText(sender.text)
            'Label1.Text = _TextMdp
            'TextBox1.Focus()
            btOK.Focus()
        End Sub
    
        'Il n'y a que le Clear d'utilisable pas de correction 1 à 1
        Private Sub btClear_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles btClear.MouseUp
            _TextMdp = ""
            TextBox1.Text = _TextMdp
            'Label1.Text = _TextMdp
            'TextBox1.Focus()
            btOK.Focus()
        End Sub
    
        'Le bouton OK
        Private Sub btok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btOK.Click      
                'Test sur le mot de passe
                'Debug.Print("Le mot de passe = " & TextBox1.Text)
             'Il faut écrire le mdp dans la forme appelante
             'Par exemple sur une variable Globale
             'Déclarée dans le forme appelante: Public strMotDePasse as string
             'Ce n'est pas la meilleure façon mais ça marche
            
            'Ceci ferme la forme et ferme la forme appelante egalement.../
            Me.DialogResult = DialogResult.OK
    
        End Sub
    
    
        Private Sub frmPadMdp_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
    
            If e.KeyChar >= "0" And e.KeyChar <= "9" Then
    
                'Raise events... BAD BAD CODE???
                Select Case e.KeyChar
                    Case "0"
                        Button0.PerformClick()
                    Case "1"
                        Button1.PerformClick()
                    Case "2"
                        Button2.PerformClick()
                    Case "3"
                        Button3.PerformClick()
                    Case "4"
                        Button4.PerformClick()
                    Case "5"
                        Button5.PerformClick()
                    Case "6"
                        Button6.PerformClick()
                    Case "7"
                        Button7.PerformClick()
                    Case "8"
                        Button8.PerformClick()
                    Case "9"
                        Button9.PerformClick()
                End Select
            ElseIf e.KeyChar = Convert.ToChar(Keys.Enter) Then ' enter
                btOK.PerformClick()
            ElseIf e.KeyChar = Convert.ToChar(Keys.Back) Then ' enter
                'On efface le dernier caractère
                If TextBox1.Text.Length > 0 Then
                    TextBox1.Text = Strings.Left(TextBox1.Text, TextBox1.Text.Length - 1)
                End If
                '    Touche_Click(11) ' validation
                'ElseIf KeyAscii = 46 Or KeyAscii = 8 Then
                '    ' suppr du pavé numérique ou del
                '    Touche_Click(10) ' erase
                'Else
                '    MsgBox("Veuillez saisir uniquement des chiffres.", vbExclamation, App.Title)
                '    TextPassword.SetFocus()
                End If
        End Sub


    Cyrille Precetti

    dimanche 6 décembre 2015 11:24

Toutes les réponses

  • On a tous un jour fait un pad numérique.

    Il y a cet article de forum très bien fait:http://www.codeproject.com/Articles/267588/Creating-a-touchscreen-interface-such-as-a-numeric


    Cyrille Precetti

    samedi 5 décembre 2015 21:59
  • " On a tous un jour fait un pad numérique." ...... :)))))

    chez les programmeurs peut etre !!!, chez moi jamais, je ne contentais de ma calculette, et meme de la regle a calcul quand j'ai passe le bac !, la calculatrice etant interdite, remarque il n'y avait pas d'ordinateur non plus ....

    bon je vais regarder le lien, dans tous les cas, merci !

    dimanche 6 décembre 2015 02:27
  • Alors j'ai regarde mais si j'ai bien compris c'est pour un ecran tactile, hors ce que je voudrais c'est un clavier numerique pour ecran classique et ecrire les chiffres avec la souris !.

    pour info j'utilise Visual Studio 2008, a priori il accepte pas "Mouseup etc."

    merci

    dimanche 6 décembre 2015 07:09
  • La souris peut cliquer sur les touches.

    Voici une capture d'écran du PadNumerique que j'utilise dans une de mes applications:

    Pad numérique

    MouseUp etc existe certainement dans VS2008.

    'Sub pour l'entrée d'un mdp numérique avec un pad    
        'Les boutons numériques
        'On utilise un overload pour le click des boutons
        Private Sub frmPadMdp_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button0.Click, Button1.Click, Button2.Click, _
       Button3.Click, Button4.Click, Button5.Click, _
       Button6.Click, Button7.Click, Button8.Click, Button9.Click
            'Debug.Print("Button event click : " & sender.ToString)
            _TextMdp += sender.text 'Attention le text du bouton doit être correct...
            TextBox1.AppendText(sender.text)
            'Label1.Text = _TextMdp
            'TextBox1.Focus()
            btOK.Focus()
        End Sub
    
        'Il n'y a que le Clear d'utilisable pas de correction 1 à 1
        Private Sub btClear_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles btClear.MouseUp
            _TextMdp = ""
            TextBox1.Text = _TextMdp
            'Label1.Text = _TextMdp
            'TextBox1.Focus()
            btOK.Focus()
        End Sub
    
        'Le bouton OK
        Private Sub btok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btOK.Click      
                'Test sur le mot de passe
                'Debug.Print("Le mot de passe = " & TextBox1.Text)
             'Il faut écrire le mdp dans la forme appelante
             'Par exemple sur une variable Globale
             'Déclarée dans le forme appelante: Public strMotDePasse as string
             'Ce n'est pas la meilleure façon mais ça marche
            
            'Ceci ferme la forme et ferme la forme appelante egalement.../
            Me.DialogResult = DialogResult.OK
    
        End Sub
    
    
        Private Sub frmPadMdp_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
    
            If e.KeyChar >= "0" And e.KeyChar <= "9" Then
    
                'Raise events... BAD BAD CODE???
                Select Case e.KeyChar
                    Case "0"
                        Button0.PerformClick()
                    Case "1"
                        Button1.PerformClick()
                    Case "2"
                        Button2.PerformClick()
                    Case "3"
                        Button3.PerformClick()
                    Case "4"
                        Button4.PerformClick()
                    Case "5"
                        Button5.PerformClick()
                    Case "6"
                        Button6.PerformClick()
                    Case "7"
                        Button7.PerformClick()
                    Case "8"
                        Button8.PerformClick()
                    Case "9"
                        Button9.PerformClick()
                End Select
            ElseIf e.KeyChar = Convert.ToChar(Keys.Enter) Then ' enter
                btOK.PerformClick()
            ElseIf e.KeyChar = Convert.ToChar(Keys.Back) Then ' enter
                'On efface le dernier caractère
                If TextBox1.Text.Length > 0 Then
                    TextBox1.Text = Strings.Left(TextBox1.Text, TextBox1.Text.Length - 1)
                End If
                '    Touche_Click(11) ' validation
                'ElseIf KeyAscii = 46 Or KeyAscii = 8 Then
                '    ' suppr du pavé numérique ou del
                '    Touche_Click(10) ' erase
                'Else
                '    MsgBox("Veuillez saisir uniquement des chiffres.", vbExclamation, App.Title)
                '    TextPassword.SetFocus()
                End If
        End Sub


    Cyrille Precetti

    dimanche 6 décembre 2015 11:24
  • J'ai recopie le code dans une forme fais les modif necessaires, mais il me dit que _TestMdp n'est pas declare ?, je le declare en quoi,  integer ?
    dimanche 6 décembre 2015 13:06
  • bon j'ai vu en bas qu'il fallait le declarer en string, et ca marche .... merci pour ca, je vais encore abuser, car ce clavier je vais le mettre dans une form ou il y aura plusieurs textbox a remplir, donc d'abord la selection de la text box avec la souris taper le nombre et valider .....

    merci

    dimanche 6 décembre 2015 13:14
  • En l'occurence _TestMdp est un string. Il est local.



    Cyrille Precetti

    dimanche 6 décembre 2015 13:30
  • oui mais comment l'affecter a differente text box sur la meme form bien sur
    dimanche 6 décembre 2015 14:49
  • Il faut passer un paramètre au lancement du pad numérique en mode byref pour qu'il soit lisible à la fermeture.

    'Dans la forme appelant le pad numérique
    
    public _MotDePasse as String
    
    Using frmPad as new frmPadNumerique(_MotDePasse)
       'On affiche la valeur
        textbox1.text=_MotDePasse.tostring
    
        'Eventuellement on vérifie la valeur
    
        if _MotDePasse="12345" then
           'Ok
        endif
    End Using
    
    
    

    Dans la forme PadNumerique il faut avoir un constructeur avec le paramètre MotDePasse

    'Déclaration interne
    Private _MotDePasse as string
    Private _ValeurEntree as string
    
    
    'Constructeur
    Public Sub New(byref MotDePasse_Parametre as string)
        _MotDePasse = MotDePasse_Parametre
    end sub
    
    'Dans les traitements des boutons 0-9
    Private Sub formPad_Click(byval sender as Object, _
    byval e as System.EventArgs) Handles Button0.Click, _
    button1.Click, button2.click, button3.click, ..._
    button9.click
        _ValeurEntree = _ValeurEntree & sender.text
        textbox1.AppendText(sender.text)
    end sub
    
    'Dans le traitement de OK pour fermer la forme
    private sub btOK_Click(sender,e) Handles btOK.Click
         _MotDePasse = Textbox1.text
    End Sub


    Cyrille Precetti

    dimanche 6 décembre 2015 16:56
  • hummmm, hummm, bon je vais etudier ca a tete repose,

    Merci


    Merci de votre aide

    lundi 7 décembre 2015 02:12