UPDATE: 我的機器上的另一個進程干擾了快捷方式檢測。delphi XE7中的KeyDown需要轉移到寄存器
在VCL TStringgrid我想複製使用「CTRL + C 「和/或內容」 CTRL + C」
代碼段:上述
procedure TEditWaterFrame.sgSSPKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (ssCtrl in Shift) AND ((Key = Ord('c')) OR (key = Ord('C'))) then // this just won't work without me holding ssShift as well, I'm clueless...!
begin
ShowMessage('Ctrl+C pressed as keys');
try
Clipboard.AsText := writeSSPToCSVString(#9);
finally
Clipboard.Free;
end;
end;
end;
// trying with keypress
procedure TEditWaterFrame.sgSSPKeyPress(Sender: TObject; var Key: Char);
begin
if (Key = ^c) then // this just won't work without me holding ssShift as well, I'm clueless...!
begin
ShowMessage('Ctrl+C pressed as char');
try
Clipboard.AsText := writeSSPToCSVString(#9);
finally
Clipboard.Free;
end;
end;
end;
兩個步驟才運行,如果ssCtrl + ssShift + c/C被按下。 未按下ssShift時(即Ctrl + c或Ctrl + C),它不會觸發。
我很困惑!
感謝突出的邏輯錯誤。 我原本有'如果a和(b或c)',但沒有產生結果,所以我顯然玩過,直到聲明觸發爲止。 我會發現解決方案,如果我找到它。 – 2sloth
請不要發佈解決方案,因爲它將依賴不在問題中的信息。沒有什麼可以添加到這個主題。 –