我有一个正在编写的Windows应用程序。我正在使用10.1C版本。我想在菜单中添加MRU功能,即我想在应用程序的文件菜单中添加,删除和修改菜单项,以按照它们的顺序显示用户的最新文件用过的。我经常用其他多种语言做到这一点,这是一个很常见的功能,非常容易做到。
但是如何进行这项工作呢?在另一种语言中,我可以创建10个菜单项并简单地使未使用的菜单项不可见,但是您无法在进行中执行此操作。我无法想象为什么。
或者,我应该能够根据需要动态创建菜单项并将它们添加到“文件”菜单中MRU列表的末尾,但我似乎也不能这样做:首先,我可以' t指定文件菜单中必须添加项目的位置,它总是将其添加到底部,其次,我无法将动态菜单添加到静态菜单,因此我无法将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项目就像在此处创建Exit菜单一样,除了我将句柄存储在临时表中。
结果是这样的菜单:
File New Open -------- Print Setup Print -------- 1 Mru item 2 Mru Item 3 Mru Item -------- Exit
答案 0 :(得分:2)
创建一个静态菜单MENU-BAR-C-Win。
添加静态子菜单“File”m_file。
将静态菜单项(使用“>>”)“退出”(m_Exit)添加到m_file。
定义.... DEFINE VARIABLE hMRU#1 AS HANDLE NO-UNDO。
动态创建一个按钮......
CREATE MENU-ITEM hMRU#1
ASSIGN
PARENT = MENU m_File:HANDLE IN MENU MENU-BAR-C-Win
LABEL = "MRU#1"
TRIGGERS:
ON CHOOSE PERSISTENT RUN SomeThing IN THIS-PROCEDURE.
END TRIGGERS.
你想跟踪你的句柄(临时表?)一些方法。