2012-02-07 25 views
1

我有一個正在編寫的Windows應用程序。我正在使用10.1C版本。我想將MRU功能添加到菜單中,即我想在應用程序的文件菜單中添加,刪除和修改菜單項,以按照使用它們的順序顯示用戶的最新文件。我在其他語言中經常使用它,這是一個非常常見的功能,而且非常容易。動態操作菜單以在Windows應用程序中創建MRU正在進行中

但是,如何進行這項工作呢?在另一種語言中,我可以創建10個菜單項並簡單地將未使用的菜單項隱藏起來,但是您不能在進行中這樣做。我無法想象爲什麼。

或者,我應該能夠根據需要動態創建菜單項並將它們添加到文件菜單中的MRU列表的末尾,但我似乎無法做到這一點:首先,我無法指定位置在文件菜單中必須添加項目,它總是將其添加到底部,其次,我不能將動態菜單添加到靜態菜單,所以我無法將我的MRU菜單添加到現有的文件菜單。我可以做到這一點,如果我使整個文件菜單動態(我真的不想做),但我不能將動態文件菜單添加到靜態菜單欄。這讓我不能接受使整個菜單結構變爲動態的選項。

有沒有人有任何想法?



使用下面阿德的答案,這裏是我如何實現這一個簡單的例子。更改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項目與在此創建的「退出」菜單一樣創建。

結果是這樣的菜單:

  File 
      New 
      Open 
      -------- 
      Print Setup 
      Print 
      -------- 
      1 Mru item 
      2 Mru Item 
      3 Mru Item 
      -------- 
      Exit 

回答

2

創建一個靜態菜單菜單欄-C雙贏。

添加靜態子菜單「文件」m_file。

添加靜態菜單項(使用「>>」)「退出」(m_Exit)到m_file。

define .... 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. 

你要保持跟蹤你的句柄(臨時表?)一些如何。

+0

感謝Ade,但正如我在我的問題中提到的那樣,這會將菜單項添加到File菜單的底部,該菜單看起來馬虎,並且不符合GUI標準。我不能給我的客戶看起來那樣。我需要MRU項目在Print和Exit之前的兩個分隔符(RULE)之間。 – RobertT 2012-02-09 11:47:46

+0

我打算假設沒有別的辦法。如果我動態創建「規則」和「退出」菜單項,我可以使用此答案,因此我將此作爲正確答案。感謝Ade! – RobertT 2012-02-13 07:40:36

相關問題