我有一个TActionManager和一个TActionMainMenuBar,我知道如何将每个MRU文件的TActionClientItem添加到主菜单栏.但是,我是否必须为列表中的每个MRU文件创建单独的操作?或者有没有办法只创建一个动
Delphi的帮助说:“有关MRU列表,示例代码和查找列表中操作的方法的更多信息,请参阅联机帮助中的FindItemByAction和FindItemByCaption.”但我找不到那些有用的主题,当然也没有示例代码.我真的想避免使用第三方组件来完成这项工作.
无论如何,每个菜单项都有一个单独的TAction,以便它们可以具有不同的Caption值.但是您不必拥有单独的OnExecute事件处理程序.事件处理程序将在其Sender参数中接收对该操作的引用.使用sender的Tag属性来引用保存文件名的列表. (不要使用Caption属性来发现要打开的文件;这会限制您做一些好事,比如添加加速器或缩短笨拙的路径.)这就是文档假设您也要做的事情. FindItemByAction返回给定操作附加到的第一个项目.如果您将单个操作附加到所有MRU菜单项,则您将无法使用该功能告诉您选择了哪个菜单.另一方面,菜单项不会保存比相关动作更多的信息,所以我认为没有理由去寻找菜单项.只需直接使用操作中的信息即可.