OVH Cloud OVH Cloud

Conversion KeyCode vers KeyAscii

3 réponses
Avatar
driss hanib
Bonjour à tous

dans le cadre d'une classe qui permet l'édition d'une MsFlexgrid (en fait un
début de classe trouvée sur le net que j'enrichis).
je veux transmettre à un textbox le keyascii d'une touche tapée dont je
récupère le keyCode.
Pour l'instant je ne souhaite pas transformer tout le code pour récupérer
directement le keyascci
Queulqu'un a-t-il déjà fait une fonction / classe..
qui peut transformer ce keycode en Keyascii ?
Je vois qu'il faut récupérer auparavant l'état d'activation des touches
Caps, Num et l'état de la touche Shift et également ALTGR
pour pouvoir interpréter ce keycode

Sinon je vois l'API GetKeyboardState pour récupérer l'état de ces touches..
comment s'en servir (je vais aller voir sur allapi.net)
et ensuite on gère

Si certains ont avancé dans cette voie, une indication serait utile..
je continue dans ma recherche

Merci d'avance
Driss

3 réponses

Avatar
John Smith
salut,

Moi j'utilise

Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
With MSFlexGrid1
If .Col = 6 Then 'seulement pour la colonne 6
Select Case KeyAscii
Case 8: 'IF KEY IS BACKSPACE THEN
If .Text <> "" Then .Text = _
Left$(.Text, (Len(.Text) - 1))
Case 13: 'IF KEY IS ENTER THEN
Select Case .Col
Case Is < (.Cols - 1):
SendKeys "{right}"
Case (.Cols - 1):
If (.Row + 1) = .Rows Then
.Rows = .Rows + 1
End If
SendKeys "{home}" + "{down}"
End Select
Case Else
.Text = .Text + Chr$(KeyAscii)
'write your own keyascii Validations under
'commented lines
Select Case .Col
Case 0, 1, 2:
'if (your condition(s)) then
'accept only charectors
'Else
' keyascii=0
'End If
Case Else:
End Select
End Select
End If
End With



End Sub
"driss hanib" wrote in message
news:%23d$
Bonjour à tous

dans le cadre d'une classe qui permet l'édition d'une MsFlexgrid (en fait
un début de classe trouvée sur le net que j'enrichis).
je veux transmettre à un textbox le keyascii d'une touche tapée dont je
récupère le keyCode.
Pour l'instant je ne souhaite pas transformer tout le code pour récupérer
directement le keyascci
Queulqu'un a-t-il déjà fait une fonction / classe..
qui peut transformer ce keycode en Keyascii ?
Je vois qu'il faut récupérer auparavant l'état d'activation des touches
Caps, Num et l'état de la touche Shift et également ALTGR
pour pouvoir interpréter ce keycode

Sinon je vois l'API GetKeyboardState pour récupérer l'état de ces
touches.. comment s'en servir (je vais aller voir sur allapi.net)
et ensuite on gère

Si certains ont avancé dans cette voie, une indication serait utile..
je continue dans ma recherche

Merci d'avance
Driss



Avatar
driss hanib
merci John

en fait mon problème se situe au niveau suivant.

j'utilise conjointement un textBox qui va me permettre l'édition d'une
cellule et même une version avec un combo box pour avoir accès sur certaines
cellules (ou plutot colonnes)
Je n'ai donc pas de problème particuliers pour faire l'édition.
Seulement actuellement l'évènement FlexGrid_KeyDown est utilisé pour
démarrer l'édition si la touche appuyée est la touche ENTER KeyCode
Cela marche très bien seulement je voudrai pouvoir démarrer tout de suite la
saisie dès que je tape un caractère, par exemple lors de la saisie d'un
nombre, lorsque j'utilise directement le pavé numérique.

Je l'ai déjà fait dans un prog mais qui n'utilisait pas cette classe, et qui
partait directement de l'évènement FlexGrid_KeyPress

Ce que je cherche donc, c'est de convertir le keycode de ma touche en
Keyascii du caractère associé (s'il y en a un).
Je vois donc par exemple que la touche "A" a comme keycode 65, mais le
keyAscii va varier en fonction du fait que la touche CapsLock est activée ou
pas et si la touche shift est appuyée ou pas.
donc le KeyCode 65 ("A") pourra donner le keyascii 65 ("A") ou 97 ("a")
et ainsi de suite ; que dire également des chiffres dont deux keycodes sont
possible : pavé numérique et le clavier normal..
etc.
Je voulais donc m'essayer à faire une méga fonction qui ferait la
transposition en fonction des différentes touches citées ci dessus (et
éventuellement ALT GR).
Mon problème de départ est d'abord de déterminer si la touche CAPS LOCK est
activée ou non.

Pour ceux que cela intéresse, je suis parti de la classe trouvée ici :
http://www.Planet-Source-Code.com/vb/scripts/ShowCode.asp?txtCodeIdd400&lngWId=1

que j'ai 'arrangée' en rajoutant des fonctionnalités : gestion des virgules
dans un nombre décimal, gestion du nombre de décimales.
Plus autre fonctions FlexGrid : colorisation des lignes 1 sur 2..

merci d'avance à toi John et aux autres

Driss

"John Smith" a écrit dans le message de news:
ThK8g.5240$
salut,

Moi j'utilise

Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
With MSFlexGrid1
If .Col = 6 Then 'seulement pour la colonne 6
Select Case KeyAscii
Case 8: 'IF KEY IS BACKSPACE THEN
If .Text <> "" Then .Text = _
Left$(.Text, (Len(.Text) - 1))
Case 13: 'IF KEY IS ENTER THEN
Select Case .Col
Case Is < (.Cols - 1):
SendKeys "{right}"
Case (.Cols - 1):
If (.Row + 1) = .Rows Then
.Rows = .Rows + 1
End If
SendKeys "{home}" + "{down}"
End Select
Case Else
.Text = .Text + Chr$(KeyAscii)
'write your own keyascii Validations under
'commented lines
Select Case .Col
Case 0, 1, 2:
'if (your condition(s)) then
'accept only charectors
'Else
' keyascii=0
'End If
Case Else:
End Select
End Select
End If
End With



End Sub
"driss hanib" wrote in message
news:%23d$
Bonjour à tous

dans le cadre d'une classe qui permet l'édition d'une MsFlexgrid (en fait
un début de classe trouvée sur le net que j'enrichis).
je veux transmettre à un textbox le keyascii d'une touche tapée dont je
récupère le keyCode.
Pour l'instant je ne souhaite pas transformer tout le code pour récupérer
directement le keyascci
Queulqu'un a-t-il déjà fait une fonction / classe..
qui peut transformer ce keycode en Keyascii ?
Je vois qu'il faut récupérer auparavant l'état d'activation des touches
Caps, Num et l'état de la touche Shift et également ALTGR
pour pouvoir interpréter ce keycode

Sinon je vois l'API GetKeyboardState pour récupérer l'état de ces
touches.. comment s'en servir (je vais aller voir sur allapi.net)
et ensuite on gère

Si certains ont avancé dans cette voie, une indication serait utile..
je continue dans ma recherche

Merci d'avance
Driss







Avatar
Driss HANIB
bonjour,

je viens de trouver une page sur vbfrance, faite par Renfield
qui montre une API prévue , après adaptation par Renfield pour obtenir le
keyascii d'une touche dont on a le keycode
je n'ai pas encore testée, mais connaissant Renfield, cela devrait me
dépanner

je la mets pour info à ceux que cela intéreserait..

remarques et commentaires à Renfield..

http://www.vbfrance.com/codes/KEYCODE-ASCII_33577.aspx

Driss

"driss hanib" a écrit dans le message de
news:
merci John

en fait mon problème se situe au niveau suivant.

j'utilise conjointement un textBox qui va me permettre l'édition d'une
cellule et même une version avec un combo box pour avoir accès sur


certaines
cellules (ou plutot colonnes)
Je n'ai donc pas de problème particuliers pour faire l'édition.
Seulement actuellement l'évènement FlexGrid_KeyDown est utilisé pour
démarrer l'édition si la touche appuyée est la touche ENTER KeyCode
Cela marche très bien seulement je voudrai pouvoir démarrer tout de suite


la
saisie dès que je tape un caractère, par exemple lors de la saisie d'un
nombre, lorsque j'utilise directement le pavé numérique.

Je l'ai déjà fait dans un prog mais qui n'utilisait pas cette classe, et


qui
partait directement de l'évènement FlexGrid_KeyPress

Ce que je cherche donc, c'est de convertir le keycode de ma touche en
Keyascii du caractère associé (s'il y en a un).
Je vois donc par exemple que la touche "A" a comme keycode 65, mais le
keyAscii va varier en fonction du fait que la touche CapsLock est activée


ou
pas et si la touche shift est appuyée ou pas.
donc le KeyCode 65 ("A") pourra donner le keyascii 65 ("A") ou 97 ("a")
et ainsi de suite ; que dire également des chiffres dont deux keycodes


sont
possible : pavé numérique et le clavier normal..
etc.
Je voulais donc m'essayer à faire une méga fonction qui ferait la
transposition en fonction des différentes touches citées ci dessus (et
éventuellement ALT GR).
Mon problème de départ est d'abord de déterminer si la touche CAPS LOCK


est
activée ou non.

Pour ceux que cela intéresse, je suis parti de la classe trouvée ici :



http://www.Planet-Source-Code.com/vb/scripts/ShowCode.asp?txtCodeIdd400&lngWId=1

que j'ai 'arrangée' en rajoutant des fonctionnalités : gestion des


virgules
dans un nombre décimal, gestion du nombre de décimales.
Plus autre fonctions FlexGrid : colorisation des lignes 1 sur 2..

merci d'avance à toi John et aux autres

Driss

"John Smith" a écrit dans le message de news:
ThK8g.5240$
> salut,
>
> Moi j'utilise
>
> Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
> With MSFlexGrid1
> If .Col = 6 Then 'seulement pour la colonne 6
> Select Case KeyAscii
> Case 8: 'IF KEY IS BACKSPACE THEN
> If .Text <> "" Then .Text = _
> Left$(.Text, (Len(.Text) - 1))
> Case 13: 'IF KEY IS ENTER THEN
> Select Case .Col
> Case Is < (.Cols - 1):
> SendKeys "{right}"
> Case (.Cols - 1):
> If (.Row + 1) = .Rows Then
> .Rows = .Rows + 1
> End If
> SendKeys "{home}" + "{down}"
> End Select
> Case Else
> .Text = .Text + Chr$(KeyAscii)
> 'write your own keyascii Validations under
> 'commented lines
> Select Case .Col
> Case 0, 1, 2:
> 'if (your condition(s)) then
> 'accept only charectors
> 'Else
> ' keyascii=0
> 'End If
> Case Else:
> End Select
> End Select
> End If
> End With
>
>
>
> End Sub
> "driss hanib" wrote in message
> news:%23d$
>> Bonjour à tous
>>
>> dans le cadre d'une classe qui permet l'édition d'une MsFlexgrid (en


fait
>> un début de classe trouvée sur le net que j'enrichis).
>> je veux transmettre à un textbox le keyascii d'une touche tapée dont je
>> récupère le keyCode.
>> Pour l'instant je ne souhaite pas transformer tout le code pour


récupérer
>> directement le keyascci
>> Queulqu'un a-t-il déjà fait une fonction / classe..
>> qui peut transformer ce keycode en Keyascii ?
>> Je vois qu'il faut récupérer auparavant l'état d'activation des touches
>> Caps, Num et l'état de la touche Shift et également ALTGR
>> pour pouvoir interpréter ce keycode
>>
>> Sinon je vois l'API GetKeyboardState pour récupérer l'état de ces
>> touches.. comment s'en servir (je vais aller voir sur allapi.net)
>> et ensuite on gère
>>
>> Si certains ont avancé dans cette voie, une indication serait utile..
>> je continue dans ma recherche
>>
>> Merci d'avance
>> Driss
>>
>
>