我有一个使用标准TAction实现的大多数功能的表单。我有一个菜单,一个工具栏和一些toobuttons。我仅使用TEditCopy和TEditPaste操作就实现了完全没有代码的剪贴板复制/粘贴。它在我拥有的TEdit和TMemo框中非常有效。
现在,我也希望它与TListBox一起使用。具体来说,我希望能够使用完全相同的菜单项,快捷键和工具按钮将选中的列表项复制到TListBox中。
因此,我相信我将需要扩展TEditCopy操作。但这对我来说似乎不是很直接。特别是,TEditAction检查集中控件是否为TCustomEdit控件,而不是TListBox。我有点担心这将是太多的工作。
显而易见的替代方法是,只需忽略标准操作,然后在通用TAction的OnExecute方法中实现复制到clipbard。
但是,在放弃之前,您有什么想法,提示或技巧可以帮助我扩展标准的TEditCopy操作吗?
最佳答案
您应该覆盖TAction的事件处理程序,或者创建一个新的后代,将TEditAction / TEditCopy中的代码与TListBox的额外处理结合起来。
操作的扩展点是设置OnExecute / OnUpdate事件处理程序,该操作在这里不起作用,因为它将禁用现有的TEdit处理。您可以继承TEditCopy并覆盖方法,但它的代码可能与直接继承于TAction的新类一样多。可能还有其他一些底层的hack会起作用,但我看不到,即使有,也保证它的可维护性要比记录的方法低。
关于delphi - 扩展delphi TEditCopy操作以将列表框项目也复制到剪贴板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2652322/