Estou necessitando fazer um menu dinâmico, para uma tela de login, que gere os menus de acordo com as permissões do usuário (quais programas ele pode acessar etc). Se alguém tiver um exemplo... Desde já agradeço.
Para quem estiver necessitando do mesmo, encontrei o seguinte material no kb da progress: http://knowledgebase.progress.com/artic ... cle/P11541 Achei prático e claro o exemplo. o fonte mais legível: Código: CURRENT-WINDOW:WIDTH-PIXELS = 800 . DEFINE VARIABLE hMenu AS WIDGET-HANDLE NO-UNDO. DEFINE VARIABLE hSubMenu AS WIDGET-HANDLE NO-UNDO. DEFINE VARIABLE hMenuItem AS WIDGET-HANDLE NO-UNDO. DEFINE VARIABLE cSubMenues AS CHARACTER INITIAL "File,Edit" NO-UNDO. DEFINE VARIABLE cMenuItem1 AS CHARACTER INITIAL "New,Open,Close,Save,Exit" NO-UNDO. DEFINE VARIABLE cMenuItem2 AS CHARACTER INITIAL "Undo,Copy,Cut,Paste" NO-UNDO. DEFINE VARIABLE iAuxlr1 AS INTEGER NO-UNDO. DEFINE VARIABLE iAuxlr2 AS INTEGER NO-UNDO. DEFINE VARIABLE iItems AS INTEGER NO-UNDO. DEFINE VARIABLE cItems AS CHARACTER NO-UNDO. CREATE MENU hMenu. DO iAuxlr1 = 1 TO NUM-ENTRIES(cSubMenues): CREATE SUB-MENU hSubMenu ASSIGN PARENT = hMenu NAME = ENTRY(iAuxlr1, cSubMenues) LABEL = ENTRY(iAuxlr1, cSubMenues). CASE hSubMenu:NAME: WHEN "File" THEN ASSIGN iItems = NUM-ENTRIES(cMenuItem1) cItems = cMenuItem1. WHEN "Edit" THEN ASSIGN iItems = NUM-ENTRIES(cMenuItem2) cItems = cMenuItem2. END. /*CASE hSubMenu:NAME:*/ DO iAuxlr2 = 1 TO iItems: CREATE MENU-ITEM hMenuItem ASSIGN PARENT = hSubMenu NAME = hSubMenu:NAME + ENTRY(iAuxlr2, cItems) LABEL = ENTRY(iAuxlr2, cItems)/* This IS WHERE the ACCELERATOR KEYS are DEFINED */ ACCELERATOR = SUBSTRING(ENTRY(iAuxlr2, cItems),2,1)/*This version just declares the 2nd letter AS the ACCELERATOR. You may remove the above LINE IF you DO NOT want TO USE ACCELERATORS. */ TRIGGERS: ON CHOOSE PERSISTENT RUN MenuItemChoose IN THIS-PROCEDURE (INPUT hMenuItem:NAME). END TRIGGERS. /*Example of how to disable a Menu-Item*/ IF hMenuItem:NAME = "EditUndo" THEN ASSIGN hMenuItem:SENSITIVE = FALSE. END. /*DO iAuxlr2 = 1 TO iItems:*/ END. /*DO iAuxlr1 = 1 TO NUM-ENTRIES(cSubMenues):*/ ASSIGN CURRENT-WINDOW:MENUBAR = hMenu:HANDLE. DEFINE FRAME F1 WITH SIZE 132 BY 18 THREE-D NO-LABELS. ENABLE ALL WITH FRAME F1. WAIT-FOR CLOSE OF CURRENT-WINDOW. PROCEDURE MenuItemChoose. DEFINE INPUT PARAMETER cMenuItemName AS CHARACTER NO-UNDO. MESSAGE "Item Selected:" SKIP(1) "'" + cMenuItemName + "'" VIEW-AS ALERT-BOX INFORMATION. IF cMenuItemName = 'FileExit' THEN QUIT. END PROCEDURE.