キーボードのキーのWord値を文字値に変換するには、Ord(キー)を使用します。それ以外の場合は、VK_値を使用します。
あなたのスニペットでは、char( '0' .. '9')とValues(#08)を混ぜたので、テストする必要はないとは思いません。そうでなければ(#08)、別の比較でKeyまたはChr(Key)に直接チェックする必要があります。
また、#0ではなくVK_UNKNOWNを使用することをお勧めします。
私はLazarusで書いた作業コードでKeyUpイベントを使用しています。 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;
これは、鍵が落ちたときにそれが取られる必要があることを間違っているように見えます。ただ試してみてください。 –