IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Créer une touche raccourcie pour les caractères graphiques comme ALT + 9824


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de excalybur
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2014
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 317
    Par défaut Créer une touche raccourcie pour les caractères graphiques comme ALT + 9824
    Bonsoir,

    Dans un RichTextBox on peut utiliser pour écrire un texte les caractères standard entrés au clavier ou des caractères spéciaux ou caractères graphiques comme cette phrase exemple " Ceci est un jeu de couleur de cartes ♠♣♥♦ et je continu mon texte ..."

    Le bémol pour rentrer les 4 caractères graphiques ♠♣♥♦ j'ai du taper 20 caractères au clavier c'est-à-dire : ALT (+) 9824 (+) ALT 9825 ... etc. Attention dans le texte que vous lisez ici, cela ne vous renverra pas des graphiques de cartes à jouer ! Normal ce n'est pas du VB.net

    Donc si l'on doit écrire un texte de 2 pages avec les commentaires d'une partie de carte illustrée par leurs couleurs cela devient vite fastidieux !

    Pour mon application (plus complexe) j'ai besoin de 12 touches de raccourcies. Dont 6 pour des graphiques blancs et 6 pour des graphiques noirs. Pour cela je pense utiliser les touches F7 à F12 avec la combinaison ALT (+) F7 pour un graphique blanc et Shift (+) F7 pour le même graphique noir. Ca sera plus rapide.

    Pour illustrer mon propos je vous ai fait un petit programme de démonstration :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Public Class Form1
     
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            RichTextBox1.Text = "Exemple d'une mélodie : ♩♪♫♬ ajouter du texte et des notes de musique ou autres glyphs avec par exemple ALT 9824; ALT 9825 ... pour le jeu de carte 'bicolores' : ♠♡♢♣ ♤♥♦♧. Soit 8 touches à programmer."
        End Sub
     
        Public Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Dim Partition = RichTextBox1.Text
            Dim result1 As DialogResult = MessageBox.Show(Partition, "Résultat : ", MessageBoxButtons.OK)
        End Sub
     
     
        Public Sub RichTextBox1_KeyPress(sender As Object, e As KeyPressEventArgs)
            If e.KeyChar = "a"c Or e.KeyChar = "A"c Then
                e.KeyChar = ChrW(9824)
                e.Handled = True
            End If
        End Sub
     
     
     
    End Class
    Ouvrir un form avec un RichTextBox et deux boutons et associer le programme ci-dessus.

    Fonctionnement : Appuyer sur le button1 => le texte apparait dans RichTextBox. Vous pouvez rajouter des 'a', des caractères en utilisant aussi ALT (+) 9824 etc... Malheureusement le sub keypress ne remplace pas les lettres 'a' tapé au clavier.

    Puis appuyer sur button2 et vous aurez l'affichage de votre texte complet dans un messagebox.

    Ce qui me manque c'est la routine qui relis
    ALT (+) F7 à ALT (+) 9824
    ALT (+) F8 à ALT (+) 9825
    ALT (+) F9 à ALT (+) 9826
    ALT (+) F10 à ALT (+) 9827

    En espérant qu'elles ne sont pas utilisées dans VB.net !
    Je me demande si l'utilisation de ALTGR ne serait pas plus disponible?
    Il faut que c'est raccourcies soit valide seulement quand on tape le texte.

    Que me conseiller vous?

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    J'ignore si j'ai bien compris mais avec le code suivant j'obtient les ♦♣♠♥ avec les touche Alt+F7 à Alt+F8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Private Sub RichTextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles RichTextBox1.KeyUp
     
        If e.Alt Then
     
            If e.KeyCode = Keys.F7 Then
                RichTextBox1.SelectedText = ChrW(9824)
            End If
     
            If e.KeyCode = Keys.F8 Then
                RichTextBox1.SelectedText = ChrW(9825)
            End If
     
            If e.KeyCode = Keys.F9 Then
                RichTextBox1.SelectedText = ChrW(9826)
            End If
     
            If e.KeyCode = Keys.F10 Then
                RichTextBox1.SelectedText = ChrW(9827)
            End If
        End If
     
    End Sub

  3. #3
    Membre émérite
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 731
    Par défaut
    Bonjour,

    Autre possibilité, créer un petit tableau affichant les caractères spéciaux utilisables, qu'il suffit de cliquer pour ajouter (comme dans les traitements de texte genre Word ou LibreOffice).
    Ou comme sur MacOS, afficher quelque chose de très complet, permettant de visualiser et sélectionner n'importe quel caractère :
    Nom : tableau_Caractères.png
Affichages : 208
Taille : 602,7 Ko

  4. #4
    Membre éprouvé Avatar de excalybur
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2014
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 317
    Par défaut
    Bonjour

    Désolé pour ce retard.

    Merci beaucoup cela réponds à mon attente, je vais tester les deux solutions et je reviens vers vous avec le résultat.

    a+

  5. #5
    Membre éprouvé Avatar de excalybur
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2014
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 317
    Par défaut
    La solution de popo fonctionne très bien. On peut aussi ajouter la fonction discriminante shift + alt et alt seul, voici un petit example :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
      Private Sub RichTextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles RichTextBox1.KeyUp
     
         If e.Shift And e.Alt Then
     
             If e.KeyCode = Keys.F5 Then
                 RichTextBox1.SelectedText = ChrW(9824)
             End If
     
            Exit Sub
         End If
     
         If e.Alt Then
     
             If e.KeyCode = Keys.F5 Then
                 RichTextBox1.SelectedText = ChrW(9825)
             End If
     
          End If
     
     End Sub

  6. #6
    Membre éprouvé Avatar de excalybur
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2014
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 317
    Par défaut
    Citation Envoyé par m4k-Hurrican Voir le message
    Bonjour,

    Autre possibilité, créer un petit tableau affichant les caractères spéciaux utilisables, qu'il suffit de cliquer pour ajouter (comme dans les traitements de texte genre Word ou LibreOffice).
    Excellente idée.

    Pour le principe il suffit d'ouvrir un RichTextBox avec les caractères spéciaux à la demande cliquable et immédiatement ce caractère choisie sera écrit sur le RichTextBox destination.

    Dans mon cas ça sera des tableaux pré-établi je pense. Ou un système scrolable par famille (genre du caractère X au caractère X+N).

    Bien sur le sumum serait d'atteindre tous les caractères spéciaux par famille avec un menu comme sur ton exemple.

    Je me lance dans l'écriture du sub test et je vous le soumet pour avis.

    A+

  7. #7
    Membre éprouvé Avatar de excalybur
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2014
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 317
    Par défaut
    Bonsoir,

    En cherchant bien cela n'est pas si simple évidement.

    Les tableaux disponibles sur le net (https://fancy-text.net/fr/special-characters.php) ou word ne sont pas importable sur une form ou alors il y a une astuce ! De plus ils nécessite une manipulations plus longue : Copié/collé etc. Or que la meilleure solution serait simplement de cliquer sur le bon caractère puis de continuer à écrire dans le RichTextBox.

    LA solution créer son tableau visible en 2D et sélectionner le caractère ad'hoc avec un simple click de souris qui transmet ce caractère directement dans le texte en cours dans le richtextbox. L'idée de le faire en mode graphique permet de faire un catch (coordonnées x et y) de la souris en mode move And click. Cette méthode me semble le plus indiqué. Reste à régler le problème des éventuels ascenseurs s'il y a plusieurs pages de tableaux. Il faudra intégrer leurs offsets.
    A moins que vous ayez une meilleure idée ?

    Le petit programme ci-dessous cré bien le tableau 6x2 expérimental mais il y a un problème ! : Comment incruste-t'on un caractère dans un rectangle ? Un caractère n'est pas une image ni un bmp



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
      Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
     
         Dim myGraphics As Graphics
     
         Dim myRectangle As Rectangle
     
         Dim myPen As New Pen(Color.Black)
     
         myGraphics = Graphics.FromHwnd(ActiveForm().Handle)
     
         'créer un tableau 6x2 affiché sur le form
         For n = 1 To 6
             For m = 1 To 2
     
                 myRectangle = New Rectangle(x:=50 * n + 0, y:=50 * m + 0, width:=50, height:=50)
                 myGraphics.DrawRectangle(pen:=myPen, rect:=myRectangle)
     
             Next
         Next
     End Sub

  8. #8
    Membre éprouvé Avatar de excalybur
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2014
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 317
    Par défaut
    Bonjour,

    Voici comment procéder en affichant par exemple un tableau de 256 caractères continu de &H2500 à &H2600 par exemple (nota: si on veut mettre un tableau de 2000 caractères c'est possible des ascenseurs apparaitrons et le chargement sera plus long ):

    Ouvrir une forme avec 2 richtextbox + 1 bouton. Fixer la fonte de richtextbox1 à ARIAL taille 26. Dimension de la fenêtre : 512x786. Mettre Richtextbox1 en mode 'écriture interdite' => Read Only=TRUE
    et copier le programme ci-dessous !

    Le richtextbox2 est le 'traitement de texte' destination. Pour le sélectionner pour la première fois faire un click dessus. On peut continuer à écrire le texte là où il était arrêté après avoir sélectionner un caractère spécial dans le tableau voisin !
    Quand la souris click sur un caractère de RichTextBox1 il apparait à la suite du texte de RichtextBox2.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Public Class Form1
     
        'Fixer la fonte de richtextbox1 à ARIAL taille 26. Dimension de la fenêtre : 512x786
        'RichTextBox2 est le texte destination en cours d'écriture
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
     
            'lit 100 lignes HEXA soit 256 caractères du tableau unicode
            For n = &H2500 To &H2600
                RichTextBox1.Text += ChrW(n)
            Next n
     
        End Sub
     
        Private Sub RichTextBox1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles RichTextBox1.MouseDown
     
            'Recherche position de la souris
            Dim box = DirectCast(sender, RichTextBox)
            Dim index = box.GetCharIndexFromPosition(e.Location)
            box.SelectionStart = index '+ 1
            box.SelectionLength = 1
            'sélectionne le caractère qui reçoit le click
            Dim SelectCharacter = box.GetCharFromPosition(e.Location)
     
            'évite erreur de saisie fin du tableau
            SendKeys.Send("{HOME}+{END}")
     
            RichTextBox2.Focus()
            RichTextBox2.Select()
     
            'Ajoute le caractères au RichTextBox2
            RichTextBox2.Text += SelectCharacter
     
        End Sub
     
     
        Private Sub RichTextBox2_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles RichTextBox2.KeyDown
     
            'place le curseur à la fin de la ligne de texte
            RichTextBox2.SelectionStart = RichTextBox2.TextLength
     
        End Sub
     
    End Class
    Exemple :



    CQFD comme ils disent ! J'espère que cela sera très utile.

    Merci M4a pour la suggestion.

    Vos avis sont les bienvenus.
    Images attachées Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Desactiver les touches clavier pour les controles d'une form
    Par Mustang83 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 19/10/2013, 12h53
  2. Touche de raccourcis pour les commentaires
    Par piotrr dans le forum NetBeans
    Réponses: 4
    Dernier message: 17/10/2008, 18h39
  3. Réponses: 2
    Dernier message: 14/06/2006, 10h34
  4. Réponses: 3
    Dernier message: 13/06/2006, 14h52
  5. Une petite aide pour les API ?
    Par Yop dans le forum Windows
    Réponses: 2
    Dernier message: 04/04/2002, 21h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo