Utilisez Ord (Key) pour convertir la valeur Word d'une clé de clavier en valeur de caractère. Sinon, utilisez une valeur VK_ si disponible.
Dans votre extrait que vous avez de l'omble mixte (« 0 » .. « 9 ») avec des valeurs (# 08), je ne suis pas sûr que ce soit ok vous devez le tester. Si ce n'est pas le cas, (# 08) doit être vérifié directement sur Key ou Chr (Key) dans une autre comparaison.
En outre, il peut être préférable d'utiliser VK_UNKNOWN plutôt que # 0.
Voici un événement KeyUp J'utilise dans un code de travail, je l'ai écrit dans Lazarus. HTH.
procedure TfrmMain.lbCmdLinesKeyUp(Sender : TObject; var Key : Word; Shift : TShiftState);
begin
if (Key = vk_return) and (lbCmdLines.ItemIndex > -1) then
begin
if (Shift = [ ssCtrl ]) then
begin
if btnLineEdit.Enabled then
btnLineEdit.Click;
end
else
begin
if btnRun.Enabled then
btnRun.Click;
end;
end;
if (Key = Ord('C')) or (Key = Ord('c')) then
begin
if Shift = [ ssCtrl ] then
actCopyClipCmdLine.Execute;
//order, apparently, doesn't matter, both work
//if Shift = [ ssCtrl, ssShift ] then
if Shift = [ ssShift, ssCtrl ] then
mniCopyCLListClipClick(Self);
//if (ssCtrl in Shift) and (ssShift in Shift) and (ssAlt in Shift) then
if Shift = [ ssCtrl, ssShift, ssAlt ] then
actCopyCmdLine.Execute;
end;
end;
Cela semble tout faux, c'est quand la clé descend que la décision doit être prise. Essayez de taper. –