Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Configurable Menues
Message
Information générale
Forum:
Visual FoxPro
Catégorie:
Autre
Divers
Thread ID:
00315119
Message ID:
00316397
Vues:
18
>I have an application, I'm looking for a way to make configurable menues, depending of the user permision.
>
>I have a lot of clients, and is impossible to make a standard level of permision.
>
>Is there a easy way to do this, Can I create o Configure menues depending of users?
I created a method in my session class: You just call oSession.do_menu("E") for english for example. Maybe you can do something around this.

Eric.

******** do_menu method ******************************
LPARAMETER p_lang
LOCAL cur_area, i_top, lpad_name, lpop_name

STORE SELECT() TO cur_area

SELECT menu, order, caption, type, command;
FROM wsmenu;
WHERE lang = p_lang;
ORDER BY menu, order;
INTO ARRAY THIS.a_wsmenu
IF _TALLY = 0
STORE 0 TO THIS.wsmenu_nb
ELSE
STORE ALEN(THIS.a_wsmenu,1) TO THIS.wsmenu_nb
ENDIF

*------------------------------------------------------------*
* Define the menu *
*------------------------------------------------------------*
SET SYSMENU TO
SET SYSMENU AUTOMATIC
*DEFINE MENU wsmenu BAR IN SCREEN

FOR i_top = 1 TO THIS.wsmenu_nb
IF THIS.a_wsmenu(i_top,1) = "TOPLEVEL"
*----- Create the pad -----*
STORE "pad"+ALLTRIM(THIS.a_wsmenu(i_top,5)) TO lpad_name
STORE "pop"+ALLTRIM(THIS.a_wsmenu(i_top,5)) TO lpop_name

* DEFINE PAD (lpad_name) OF wsmenu PROMPT ALLTRIM(THIS.a_wsmenu(i_top,3))
DEFINE PAD (lpad_name) OF _MSYSMENU PROMPT ALLTRIM(THIS.a_wsmenu(i_top,3))
ON PAD (lpad_name) OF _MSYSMENU ACTIVATE POPUP (lpop_name)
=THIS.do_menu_pop(lpop_name, ALLTRIM(THIS.a_wsmenu(i_top,5)))

*--------------------------*

ENDIF
ENDFOR

*ACTIVATE MENU wsmenu
* Let's free some memory
DIMENSION THIS.a_wsmenu(1,5)

SELECT (cur_area)

****** do_menu_pop method *********
*------------------------------------------------------------*
* Define one pop (used only by this.do_menu) *
*------------------------------------------------------------*
LPARAMETER p_pop_name, p_menu
LOCAL i, lsub_pop_name, l_command

DEFINE POPUP (p_pop_name) MARGIN RELATIVE SHADOW
* Define each bar for the menu
FOR i = 1 TO THIS.wsmenu_nb
IF THIS.a_wsmenu(i, 1) = p_menu && Ok, same menu
DO CASE
CASE THIS.a_wsmenu(i, 4) = "B" && Bar
DEFINE BAR THIS.a_wsmenu(i, 2) OF (p_pop_name) PROMPT "\-"
CASE THIS.a_wsmenu(i, 4) = "M" && Sub-menu
DEFINE BAR THIS.a_wsmenu(i, 2) OF (p_pop_name) PROMPT THIS.a_wsmenu(i,3)
STORE "spop"+ALLTRIM(THIS.a_wsmenu(i,5)) TO lsub_pop_name
ON BAR THIS.a_wsmenu(i, 2) OF (p_pop_name) ACTIVATE POPUP &lsub_pop_name
=THIS.do_menu_pop(lsub_pop_name,ALLTRIM(THIS.a_wsmenu(i,5)))
OTHERWISE && Regular choice
DEFINE BAR THIS.a_wsmenu(i, 2) OF (p_pop_name) PROMPT THIS.a_wsmenu(i,3)
STORE THIS.a_wsmenu(i, 5) TO l_command
ON SELECTION BAR THIS.a_wsmenu(i, 2) OF (p_pop_name) &l_command
ENDCASE
ENDIF
ENDFOR

RETURN
Eric Crespin
Consultant
PC PLUS Software Inc.
www.pcplus.ca
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform