flo160fr
Messages postés157Date d'inscriptiondimanche 19 novembre 2000StatutMembreDernière intervention14 avril 2009
-
6 juin 2006 à 16:59
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 2022
-
7 juin 2006 à 17:33
Bonjour,
Je voudrai connaitre le numéro du caractere qui correspond à la touche <Entrée> (sous la forme $xx) et si possible un moyen de connaitres les caracteres des autres touches spéciales...
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 20134 6 juin 2006 à 18:03
Salut,
Enter = 13
Pour connaître les autres caractères, tu mets sur une form un label, tu crées un évenement Form1.OnKeyDown : Label1.Caption:= IntToStr(Key);
et tu frappes...
Pour avoir la valeur en hexa tu fais : Label1.Caption:= IntToHex(Key,8).
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 20134 7 juin 2006 à 12:17
Ctrl+H : dans un composant d'édition (TEdit...) : ça marche.
F1..F2, fin, tab, insert : pas de problèmes pour retrouver leur valeur.
Pour savoir si les touches Ctrl, Shift et Alt ont été enfoncées : dans un événement OnKeyDown c'est très facile :
if (ssCtrl in Shift) and (key = VK_F5) then... //tu récupères ainsi un Ctrl + F5
sinon, tu dois jongler avec la réception d'un message clavier et employer des fonctions Windows comme GetKeyState...
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 7 juin 2006 à 14:45
Et pour plus d'informations sur les touches pressées il faut utiliser un KeyboardHook en local et la toutes les touches sont détectées avec en plus d'autres données comme :
Touche Standard où Étendue
Alt pressé où non
Touche pressée, relâchée, maintenue
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 7 juin 2006 à 17:33
petite fonction magique sans hook ... avec detection Caps, Scroll, Pause, Num lock ect...
correction et distinction des rshift, lshift, rctrl, lctrl, ralt, alt-gr, touches de fonctions, bouttons de souris ect...
a utiliser comme suis par exemple :
procedure TForm1.KeyPress(Sender : TObject; Key : char);
var BSKeys : TByteSet;
begin
KeyboardState(BSKeys);
if VK_???in BSKeys then windows.beep(440,5);
// si BSKeys contient la touche
VK_??? on fait un beep
if [VK_??,VK_??,VK_??]<= BSKeys then
windows.beep(880,5);
// si BSKeys contient l'ensemble de touches
[VK_??,VK_??,VK_??] on fait un beep
if
[VK_??,VK_??,VK_??]
= BSKeys then
windows.beep(1760,5);
// si BSKeys ne contient que les touches
[VK_??,VK_??,VK_??] on fait un beep
end;
{ ----------------------- }
type
TByteSet = Set of byte;
procedure KeyboardState(var KeysSet : TByteSet);
var K : byte;
begin
// reset Keys set
KeysSet
:= [];
{ Get persistent keys }
// caps lock
if GetKeyState(144) = 1 then
KeysSet
:=
KeysSet
+ [144];
// scroll lock
if GetKeyState(145) = 1 then
KeysSet
:=
KeysSet
+ [145];
// Num lock
if GetKeyState(20) = 1 then
KeysSet
:=
KeysSet
+ [20];
// pause
if GetKeyState(19) = 1 then
KeysSet
:=
KeysSet
+ [19];
{ Get pushed keys }
for K := 0 to 255 do
if windows.GetAsyncKeyState(K) < 0 then begin
KeysSet
:=
KeysSet
+ [K];
case K of
// correction of Ctrl, Alt, Shift
17,16,18 :
KeysSet
:=
KeysSet
- [K];
// correction of AltGr
165 :
KeysSet
:=
KeysSet
flo160fr
Messages postés157Date d'inscriptiondimanche 19 novembre 2000StatutMembreDernière intervention14 avril 2009 7 juin 2006 à 10:39
justement, coment on fait pour savoir si les touche ctrl, shift, alt, alt gr, suppr, F1..F2, fin, tab, insert, ->, <-,... ont été appuyés ? parcque j'ai pas réussi a récupéré de caractères pour elles...
flo160fr
Messages postés157Date d'inscriptiondimanche 19 novembre 2000StatutMembreDernière intervention14 avril 2009 7 juin 2006 à 10:50
et aussi, je voudrai savoir pourquoi quand je fait ctrl+h c'est le meme caractere que retours arrière, mais il n'efface rien,
et ctrl+p donne $10 alors que si 'appuye sur shift il se passe rien...
flo160fr
Messages postés157Date d'inscriptiondimanche 19 novembre 2000StatutMembreDernière intervention14 avril 2009 7 juin 2006 à 12:40
Je vien de comprendre d'ou venai mon problème de capture de touche...
Les touches comme F5, Ctrl, .... &co ne son pas capturer avec l'événement on keyPress mais que avec KeyDown ou KeyUp...
flo160fr
Messages postés157Date d'inscriptiondimanche 19 novembre 2000StatutMembreDernière intervention14 avril 2009 7 juin 2006 à 13:30
Encore une dernière question (et apres c'est fini promis)
j'arriva pas a capturer l'appuie sur la touche "Tabulation"
et je voudrai savoir comment on fait pour diférencier ctrl gauche/droit alt gauche/droit entrée pav.num et entrée normal...