我有两个列表框,都有Multiselect:= True。我有一个弹出菜单,可以复制/粘贴剪贴板中的所选项目。一切都按预期工作。
我想添加键盘CtrlC(复制)和Ctrl + V(粘贴)但在选择项目后,然后使用Ctrl-C,所选项目全部丢失选择,并且选择列表中的第一项并将其复制到剪贴板。
我正在使用KeyPreview和主要表单OnKeyUp
if (ssCtrl in Shift) then
begin
case Char(Key) of
'c','C' : puCopyClick(Sender);
'v','V' : puPasteClick(Sender);
end;
Exit;
end;
case Key of
VK_Delete : puDeleteClick(Self);
end;
Exit;
如何让Ctrl + C等像弹出框一样工作?
由于
答案 0 :(得分:2)
处理快捷键的最佳方法是让菜单项处理它们。你说你有一个包含这些动作的弹出菜单。使用菜单项的Shortcut
属性将该菜单项与快捷键相关联。
这允许您删除所有手动键盘事件处理并让框架为您执行此操作。这有很多好处。其中最重要的一点是,当密钥发生故障时,事件将会触发,而不是像现在一样,它会上升。
更好的方法是使用在Delphi 5中确实存在的操作。这些操作允许您将单个操作关联,例如复制到剪贴板多个独立的UI元素。例如,该操作可以与主菜单,弹出菜单和快捷键相关联。