我有一个正在编写的 Windows 应用程序。我正在使用 10.1C 版本。我想在菜单中添加 MRU 功能,即我想在应用程序的文件菜单中添加、删除和修改菜单项,以按使用顺序显示用户最近的文件。我已经在许多其他语言中经常这样做了,这是一个非常常见的功能并且很容易做到。
但是如何在进行中做到这一点呢?在另一种语言中,我可以创建 10 个菜单项并简单地使未使用的菜单项不可见,但您不能在 Progress 中执行此操作。我无法想象为什么。
或者,我应该能够根据需要动态创建菜单项并将它们添加到文件菜单中 MRU 列表的末尾,但我似乎也不能这样做:首先,我无法指定文件菜单中的位置该项目必须添加,它总是将其添加到底部,其次,我无法将动态菜单添加到静态菜单,因此我无法将我的 MRU 菜单添加到现有的文件菜单中。如果我使整个文件菜单动态化(我真的不想这样做),我可以做到这一点,但是我不能将动态文件菜单添加到静态菜单栏。这给我留下了使整个菜单结构动态化的不可接受的选择。
有人有什么想法吗?
使用下面的 Ade 回答,这里是我如何实现它的一个简短示例。更改 MRU 项目的标签和值不需要任何摆弄,只需设置适当的属性,但为了添加新的 MRU 项目,我必须删除并重新创建退出菜单项:
/* Remove the RULE and Exit menu items */
IF VALID-HANDLE(ghMenuRule) THEN DELETE OBJECT ghMenuRule.
IF VALID-HANDLE(ghMenuExit) THEN DELETE OBJECT ghMenuExit.
/*
...
Coding to add MRU items.
...
*/
/* Create the RULE and Exit menu items */
CREATE MENU-ITEM ghMenuRule
ASSIGN
SUBTYPE = "RULE"
PARENT = MENU m_File:HANDLE IN MENU MENU-BAR-C-Win.
CREATE MENU-ITEM ghMenuExit
ASSIGN
PARENT = MENU m_File:HANDLE IN MENU MENU-BAR-C-Win
LABEL = "E&xit"
TRIGGERS:
ON CHOOSE PERSISTENT RUN ExitApp IN THIS-PROCEDURE.
END TRIGGERS.
实际的 MRU 项目的创建与此处创建的退出菜单一样,只是我将句柄存储在临时表中。
结果是这样的菜单:
文件 新的 打开 -------- 打印设置 打印 -------- 1 个 Mru 项目 2 Mru 项目 3 Mru 项目 -------- 出口