La fonction Ord donne le rang dans un type scalaire.
Or, tu veux comparer la valeur retournée à un ensemble où les éléments n'ont pas de valeur de rang.
La bonne formule est :
if Key in [VK_CONTROL, VK_MENU, VK_LWIN, VK_RWIN] then;
ou alors :
case key of
VK_CONTROL, VK_MENU, VK_LWIN, VK_RWIN :;
end;
Pour des questions de lisibilité et de facilité de maintenance, évites d'utiliser les valeurs (qui, de plus, sont données en hexadécimal dans l'aide

).
Avoues que c'est tout de même plus facile à lire et...à comprendre.
Recherches "virtual keys" dans la Win32 programmer's reference livrée avec Delphi.
May Delphi be with you.Delphi advanced-------------------------------
Réponse au message :
-------------------------------
Bon j'ai réussi a isoler le pb avec keyup et keydown, en refusant certaines touches (91 (menu démarrer) et 93 (menu popup) particulièrement).
J'ai le code ci dessous :
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if ord(Key) in [17,18,91,93] then
else
begin
{instructions}
end;
end;
Mais voila je n'arrive pas a le faire fonctionner avec le test : if not ord(Key) in [17,18,91,93] then...
Il me refuse la compilation.. quel est le pb ? Merci de me répondre.
Après ca, je met la source sur le forum.
JuniorFr