Verwenden Sie Ord (Key), um den Word-Wert einer Tastaturtaste in einen Zeichenwert zu konvertieren. Andernfalls verwenden Sie einen VK_-Wert, falls verfügbar.
In Ihrem Snippet haben Sie Char ('0' .. '9') mit Werten (# 08) gemischt, ich bin mir nicht sicher, ob das in Ordnung ist, Sie müssen es testen. Wenn nicht, dann muss (# 08) entweder direkt auf Schlüssel oder Chr (Schlüssel) in einem anderen Vergleich überprüft werden.
Es kann auch vorzuziehen sein, VK_UNKNOWN statt # 0 zu verwenden.
Hier ist ein KeyUp-Ereignis, das ich in irgendeinem Arbeitscode verwende, den ich in Lazarus geschrieben habe. 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;
Das sieht alles falsch aus es ist, wenn der Schlüssel untergeht, dass die Entscheidung getroffen werden muss. Versuche einfach zu tippen. –