Deshabilitar opciones menu....(Solucionado)

Deshabilitar opciones menu....(Solucionado)

Postby ACC69 » Fri Apr 22, 2016 9:28 pm

Hola buenas tardes Ingenieros del foro ,necesito de su ayuda de ustedes.

Una de las cosas que nunca he logrador hacer en los menus, es deshabilitar y habilitar opciones a menus, como por ejemplo , si quiero generar indices al entrar a la opcion de menu de generar indices, que me deshabilite me deshabilite el resto de las opciones de menu para evitar errores a la hora de generar indices.

Ahora con ese nuevo proyecto que lo tengo rezagado por falta de tiempo que logre entrar de acceso al menu,gracias a los Ing. Cristobal Navarro,Jose Luis y Francisco Alegria,salio perfecto.
Pero ahora quiero accesar a la opcion de menu que dice altas+empresas,como puedo deshabilitar las opciones de menu:
Avisos, Reportes, Utilerias, Configuracion, sin antes no he seleccionado la empresa; el unico que debe quedar habilitada es Altas y mas Empresas y estar deshabilitada Cerrar empresas e Incidencias.

Ya una vez que elija abrir la empresa, ahora si que me quede habilitada algunas opciones de menus, asi como cerrar empresas

No tengo problemas en mostrar en un txbrowse la lista de empresas a seleccionar, es lo de menos, lo unico que quiero es deshabilitar las opciones que mencione!

Pongo la imagen, y me entiendan lo que quiero hacer:


Image

Image

<a href='http://www.subirimagenes.com/otros-deshabilitar-9568593.html'><img src='http://s2.subirimagenes.com/otros/previo/thump_9568593deshabilitar.jpg' alt='subir imagenes' border='0'></a>

Y codigo del menu....

Code: Select all  Expand view  RUN
DEFINE WINDOW oWnd MENU DespMenu() ICON oICON Title "Control de obligaciones de SAT" MenuInfo 1 MDI COLOR nClr,nClr
   SET FONT OF oWnd TO oFont1
   SET MESSAGE OF oWnd TO "Selección de empresa..." CENTER

   DEFINE BUTTONBAR oBar 3DLOOK BUTTONSIZE 26,26 OF oWnd

   oWnd:bPainted := { | hDC | BmpTiled( hDC, oWnd, oBmp ) }

   *oWnd:oMsgBar:nClrPane := nRgb(0,0,200)
   *oWnd:oMsgBar:nClrText := nRgb(0,0,200)

   oWnd:oMsgBar:KeybOn()
   oWnd:oMsgBar:DateOn()
 ACTIVATE WINDOW oWnd MAXIMIZED // ON INIT Sel_Acceso(oWnd)

 DbCloseAll()


Code: Select all  Expand view  RUN
// --- Despliegue de Menús
//------------------------------------------------------------------------------\\
STATIC FUNCTION DespMenu()
 LOCAL oMenu

 MENU oMenu

   IF aMod[1] .AND. aPer[1]
       MENUITEM "&Altas"

       MENU
         MENUITEM oItem[01] PROMPT "Empresas" Action AltasSAT() ;
                            MESSAGE "Abrir Empresas"
         MENUITEM oItem[02] PROMPT "Cerrar empresa" Action Calcula();
                            MESSAGE "Cerrar empresa"
         MENUITEM oItem[03] PROMPT "Incidencias" Action EnProceso()
                            *MESSAGE "Altas de incidencias"

         SEPARATOR

         MENUITEM oItem[04] Prompt "&Salir";
                            ACTION IF( MsgYesNo("Desea salir del programa?"),oWnd:End(),);
                            MESSAGE "Finalizar el programa"
       ENDMENU
   ENDIF

   IF aMod[2] .AND. aPer[2]
       MENUITEM "&Avisos"

       MENU
         MENUITEM oItem[05] PROMPT "Avisos" Action EnProceso();
                            MESSAGE "Avisos y seleccion de imagen"
       ENDMENU
   ENDIF

   IF aMod[3] .AND. aPer[3]
       MENUITEM "&Reportes"

       MENU
         MENUITEM oItem[06] PROMPT "Reporte Asistencias" Action EnProceso()
         MENUITEM oItem[07] PROMPT "Impr. de Credenciales" Action EnProceso()  // Action EnProceso()
         *MENUITEM oItem[16] PROMPT "Ventas" Action RVENTA()
         *MENUITEM oItem[17] PROMPT "Compras" Action RCOMPRAS()
         *MENUITEM oItem[18] PROMPT "Clasif. de grupos" Action EnProceso()
         *MENUITEM oItem[19] PROMPT "Inventario" Action RINVENTARI()
         *MENUITEM oItem[20] PROMPT "Inventario físico" Action EnProceso()
       ENDMENU
   ENDIF

   IF aMod[5] .AND. aPer[5]
       MENUITEM "&Utilerías"

       MENU
         *MENUITEM oItem[21] PROMPT "Indexar archivos" Action Indexa()
       ENDMENU
   ENDIF

   IF aMod[6] .AND. aPer[6]
       MENUITEM "&Configuración"

       MENU
         MENUITEM oItem[26] PROMPT "Perfíl de Usuarios" Action EnProceso("PERFUSUA()",oItem[26], oItem[26]);
                            Message "Alta de Usuarios"
       ENDMENU
   ENDIF
 ENDMENU
RETURN (oMenu)



Alguien que me pueda ayudar con ese codigo habilitar y deshabilitar opciones de menu...

Gracias ,esperando contar con su apoyo de siempre de todos ustedes Ingenieros.

Atte: Adrian C. C.
Last edited by ACC69 on Tue May 03, 2016 8:16 pm, edited 1 time in total.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Deshabilitar opciones menu....

Postby cnavarro » Fri Apr 22, 2016 9:31 pm

No puedes usar la clausula WHEN ?

MENUITEM ..... WHEN < condicion / funcion >
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Deshabilitar opciones menu....

Postby ACC69 » Mon Apr 25, 2016 4:22 pm

cnavarro wrote:No puedes usar la clausula WHEN ?

MENUITEM ..... WHEN < condicion / funcion >



Hola buenos dias gracias por tu atencion Ing. Cristobal Navarro, estuve viendo el codigo de fivedbu, pero no encontre nada parecido de como deshabilitar las opciones de menu y tu ejemplo no me queda claro aun, y sigo investigando mas a ver si alguien me puede echar una mano con lo que quiero hacer habilitar y deshabilitar opciones de menu,ahi puse el ejemplo y la pantalla de lo que quiero hacer, una vez seleccionada la empresa a trabajar, me habilite las opciones de menu.

Saludos

Atte: Adrian C. C.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Deshabilitar opciones menu....

Postby joseluisysturiz » Tue Apr 26, 2016 5:11 am

Saludos, la idea que te sugiere Navarro es esta...
Code: Select all  Expand view  RUN

IF aMod[1] .AND. aPer[1]
       MENUITEM "&Altas"
       MENU
         MENUITEM oItem[01] PROMPT "Empresas" ;
        Action AltasSAT() ;
        MESSAGE "Abrir Empresas" ;
WHEN ( una variable cumpla una condicion ) // ejemplo con campo logico: When ( lBloquea )

         MENUITEM oItem[02] PROMPT "Cerrar empresa" Action Calcula();
                            MESSAGE "Cerrar empresa"
         MENUITEM oItem[03] PROMPT "Incidencias" Action EnProceso()
                            *MESSAGE "Altas de incidencias"

         SEPARATOR

         MENUITEM oItem[04] Prompt "&Salir";
                            ACTION IF( MsgYesNo("Desea salir del programa?"),oWnd:End(),);
                            MESSAGE "Finalizar el programa"
       ENDMEN
 


Otra opcion seria que crearas un Menu personalizado desde una DBF o Tabla con las opciones que quieres esten activas, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Deshabilitar opciones menu....

Postby ACC69 » Tue Apr 26, 2016 4:41 pm

joseluisysturiz wrote:Saludos, la idea que te sugiere Navarro es esta...
Code: Select all  Expand view  RUN

IF aMod[1] .AND. aPer[1]
       MENUITEM "&Altas"
       MENU
         MENUITEM oItem[01] PROMPT "Empresas" ;
        Action AltasSAT() ;
        MESSAGE "Abrir Empresas" ;
WHEN ( una variable cumpla una condicion ) // ejemplo con campo logico: When ( lBloquea )

         MENUITEM oItem[02] PROMPT "Cerrar empresa" Action Calcula();
                            MESSAGE "Cerrar empresa"
         MENUITEM oItem[03] PROMPT "Incidencias" Action EnProceso()
                            *MESSAGE "Altas de incidencias"

         SEPARATOR

         MENUITEM oItem[04] Prompt "&Salir";
                            ACTION IF( MsgYesNo("Desea salir del programa?"),oWnd:End(),);
                            MESSAGE "Finalizar el programa"
       ENDMEN
 


Otra opcion seria que crearas un Menu personalizado desde una DBF o Tabla con las opciones que quieres esten activas, saludos... :shock:



Hola Ing. Jose Luis nuevamente gracias por su atencion al ejemplo, pero crei que era otra forma como se hacia, yo lo estaba haciendo asi, pero me marcaba error y no daba con ello, no se me paso por la mente el usar la variable logica, pero crei que esa era la forma de deshabilitar y habilitar opciones de menu

Yo lo hacia de esta manera:
MENU oMenu

Code: Select all  Expand view  RUN
IF aMod[1] .AND. aPer[1]
       MENUITEM "&Altas"

       MENU
         MENUITEM oItem[01] PROMPT "Empresas" Action AltasSAT() ;
                            MESSAGE "Abrir Empresas"
         MENUITEM oItem[02] PROMPT "Cerrar empresa" Action Calcula() When oMenu:oItem[01] >1 ; // Por aca asi lo hacia pero me marcaba error
                            MESSAGE "Cerrar empresa"
         MENUITEM oItem[03] PROMPT "Incidencias" Action EnProceso() When oMenu:oItem[01] >1 ;  //  Por aca asi lo hacia pero me marcaba error
                            MESSAGE "Altas de incidencias"


Pero he visto en otros que esa instruccion tienen codificado, o era para otro tipo ,asi que no se cual seria la mejor manera de codificarlo

Saludos y buen dia.

Atte: Adrian C. C.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Deshabilitar opciones menu....

Postby joseluisysturiz » Tue Apr 26, 2016 4:58 pm

ACC69 wrote:
joseluisysturiz wrote:Saludos, la idea que te sugiere Navarro es esta...
Code: Select all  Expand view  RUN

IF aMod[1] .AND. aPer[1]
       MENUITEM "&Altas"
       MENU
         MENUITEM oItem[01] PROMPT "Empresas" ;
        Action AltasSAT() ;
        MESSAGE "Abrir Empresas" ;
WHEN ( una variable cumpla una condicion ) // ejemplo con campo logico: When ( lBloquea )

         MENUITEM oItem[02] PROMPT "Cerrar empresa" Action Calcula();
                            MESSAGE "Cerrar empresa"
         MENUITEM oItem[03] PROMPT "Incidencias" Action EnProceso()
                            *MESSAGE "Altas de incidencias"

         SEPARATOR

         MENUITEM oItem[04] Prompt "&Salir";
                            ACTION IF( MsgYesNo("Desea salir del programa?"),oWnd:End(),);
                            MESSAGE "Finalizar el programa"
       ENDMEN
 


Otra opcion seria que crearas un Menu personalizado desde una DBF o Tabla con las opciones que quieres esten activas, saludos... :shock:



Hola Ing. Jose Luis nuevamente gracias por su atencion al ejemplo, pero crei que era otra forma como se hacia, yo lo estaba haciendo asi, pero me marcaba error y no daba con ello, no se me paso por la mente el usar la variable logica, pero crei que esa era la forma de deshabilitar y habilitar opciones de menu

Yo lo hacia de esta manera:
MENU oMenu

Code: Select all  Expand view  RUN
IF aMod[1] .AND. aPer[1]
       MENUITEM "&Altas"

       MENU
         MENUITEM oItem[01] PROMPT "Empresas" Action AltasSAT() ;
                            MESSAGE "Abrir Empresas"
         MENUITEM oItem[02] PROMPT "Cerrar empresa" Action Calcula() When oMenu:oItem[01] >1 ; // Por aca asi lo hacia pero me marcaba error
                            MESSAGE "Cerrar empresa"
         MENUITEM oItem[03] PROMPT "Incidencias" Action EnProceso() When oMenu:oItem[01] >1 ;  //  Por aca asi lo hacia pero me marcaba error
                            MESSAGE "Altas de incidencias"


Pero he visto en otros que esa instruccion tienen codificado, o era para otro tipo ,asi que no se cual seria la mejor manera de codificarlo

Saludos y buen dia.

Atte: Adrian C. C.


La opcion WHEN la puedes condicionar bajo cualquier valor en variable, solo se activara la opcion de click en le menuitem cuando se cumpla la condicion que hagas, habria que ver que error es el que te esta dando bajo tu WHEN, pruebalo de nuevo y coloca aca el error y entre todos resolvemos, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Deshabilitar opciones menu....

Postby ACC69 » Tue Apr 26, 2016 5:16 pm

joseluisysturiz wrote:
ACC69 wrote:
joseluisysturiz wrote:Saludos, la idea que te sugiere Navarro es esta...
Code: Select all  Expand view  RUN

IF aMod[1] .AND. aPer[1]
       MENUITEM "&Altas"
       MENU
         MENUITEM oItem[01] PROMPT "Empresas" ;
        Action AltasSAT() ;
        MESSAGE "Abrir Empresas" ;
WHEN ( una variable cumpla una condicion ) // ejemplo con campo logico: When ( lBloquea )

         MENUITEM oItem[02] PROMPT "Cerrar empresa" Action Calcula();
                            MESSAGE "Cerrar empresa"
         MENUITEM oItem[03] PROMPT "Incidencias" Action EnProceso()
                            *MESSAGE "Altas de incidencias"

         SEPARATOR

         MENUITEM oItem[04] Prompt "&Salir";
                            ACTION IF( MsgYesNo("Desea salir del programa?"),oWnd:End(),);
                            MESSAGE "Finalizar el programa"
       ENDMEN
 


Otra opcion seria que crearas un Menu personalizado desde una DBF o Tabla con las opciones que quieres esten activas, saludos... :shock:



Hola Ing. Jose Luis nuevamente gracias por su atencion al ejemplo, pero crei que era otra forma como se hacia, yo lo estaba haciendo asi, pero me marcaba error y no daba con ello, no se me paso por la mente el usar la variable logica, pero crei que esa era la forma de deshabilitar y habilitar opciones de menu

Yo lo hacia de esta manera:
MENU oMenu

Code: Select all  Expand view  RUN
IF aMod[1] .AND. aPer[1]
       MENUITEM "&Altas"

       MENU
         MENUITEM oItem[01] PROMPT "Empresas" Action AltasSAT() ;
                            MESSAGE "Abrir Empresas"
         MENUITEM oItem[02] PROMPT "Cerrar empresa" Action Calcula() When oMenu:oItem[01] >1 ; // Por aca asi lo hacia pero me marcaba error
                            MESSAGE "Cerrar empresa"
         MENUITEM oItem[03] PROMPT "Incidencias" Action EnProceso() When oMenu:oItem[01] >1 ;  //  Por aca asi lo hacia pero me marcaba error
                            MESSAGE "Altas de incidencias"


Pero he visto en otros que esa instruccion tienen codificado, o era para otro tipo ,asi que no se cual seria la mejor manera de codificarlo

Saludos y buen dia.

Atte: Adrian C. C.


La opcion WHEN la puedes condicionar bajo cualquier valor en variable, solo se activara la opcion de click en le menuitem cuando se cumpla la condicion que hagas, habria que ver que error es el que te esta dando bajo tu WHEN, pruebalo de nuevo y coloca aca el error y entre todos resolvemos, saludos... :shock:




Gracias Ing. Jose Luis, este es el error que me marca al pasar al menu:

Code: Select all  Expand view  RUN
Application
===========
   Path and name: C:\Proy_Hb\CObSAT\Hb_CObSAT.exe (32 bits)
   Size: 3,077,120 bytes
   Compiler version: Harbour 3.2.0dev (r1412151448)
   FiveWin  Version: FWH 14.12
   Windows version: 6.2, Build 9200

   Time from start: 0 hours 0 mins 4 secs
   Error occurred at: 26/04/16, 12:05:11
   Error description: Error BASE/1004  Message not found: TMENU:OITEM
   Args:
     [   1] = O   TMENU

Stack Calls
===========
   Called from:  => __ERRRT_SBASE( 0 )
   Called from: ../../../tobject.prg => TMENU:ERROR( 0 )
   Called from: ../../../tobject.prg => (b)HBOBJECT( 0 )
   Called from: ../../../tobject.prg => TMENU:MSGNOTFOUND( 0 )
   Called from: ../../../tobject.prg => TMENU:OITEM( 0 )
   Called from: ObligSAT.prg => (b)DESPMENU( 252 )
   Called from: .\source\classes\MENU.PRG => TMENU:INITIATE( 531 )
   Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:INITMENUPOPUP( 2676 )
   Called from:  => TMDIFRAME:HANDLEEVENT( 0 )
   Called from: .\source\classes\WINDOW.PRG => _FWH( 3345 )
   Called from:  => WINRUN( 0 )
   Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE( 1050 )
   Called from: ObligSAT.prg => PRINCIPAL( 201 )

System
======
   CPU type: Intel(R) Core(TM)2 Duo CPU     E7500  @ 2.93GHz 2933 Mhz
   Hardware memory: 2816 megs

   Free System resources: 90 %
        GDI    resources: 90 %
        User   resources: 90 %

   Windows total applications running: 5
      1 , C:\Program Files (x86)\TeamViewer\tv_w32.dll                                                        
      2 , C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.9600.18006_none_a9ec6a
      3 Conmutación de tareas, C:\Proy_Hb\CObSAT\Hb_CObSAT.exe                                                                    
      4 DDE Server Window, C:\Windows\SYSTEM32\OLE32.DLL                                                                      
      5 GDI+ Window,                                                                                                    

Variables in use
================
   Procedure     Type   Value
   ==========================
   __ERRRT_SBASE
     Param   1:    O    Class: ERROR
   TMENU:ERROR
     Param   1:    N    13
     Param   2:    N    1004
     Param   3:    C    "Message not found"
     Param   4:    C    "TMENU:OITEM"
     Param   5:    N    1
     Param   6:    O    Class: TMENU
     Local   1:    U    
     Local   2:    U    
   (b)HBOBJECT
     Param   1:    C    "Message not found"
     Param   2:    C    "TMENU"
     Param   3:    C    "OITEM"
     Param   4:    N    1004
   TMENU:MSGNOTFOUND
     Param   1:    O    Class: TMENU
     Param   2:    C    "OITEM"
   TMENU:OITEM
     Param   1:    C    "OITEM"
   (b)DESPMENU
   TMENU:INITIATE
     Param   1:    O    Class: TMENUITEM
   TMDIFRAME:INITMENUPOPUP
     Local   1:    N    2
     Local   2:    U    
     Local   3:    O    Class: TMENUITEM
   TMDIFRAME:HANDLEEVENT
     Param   1:    N    396494883
     Param   2:    N    0
     Param   3:    L    .F.
     Local   1:    O    Class: TMENU
   _FWH
     Param   1:    N    279
     Param   2:    N    396494883
     Param   3:    N    0
   WINRUN
     Param   1:    N    0
     Param   2:    N    279
     Param   3:    N    396494883
     Param   4:    N    0
     Param   5:    N    1
     Local   1:    O    Class: TMDIFRAME
   TMDIFRAME:ACTIVATE
     Param   1:    N    14813544
   PRINCIPAL
     Param   1:    C    "MAXIMIZED"
     Param   2:    U    
     Param   3:    U    
     Param   4:    U    
     Param   5:    U    
     Param   6:    B    {|| ... }
     Param   7:    U    
     Param   8:    U    
     Param   9:    U    
     Param  10:    U    
     Param  11:    U    
     Param  12:    U    
     Param  13:    U    
     Param  14:    U    
     Param  15:    U    
     Param  16:    U    
     Param  17:    U    
     Param  18:    U    
     Param  19:    U    
     Param  20:    L    .F.
     Local   1:    O    Class: TMDIFRAME
     Local   2:    U    
     Local   3:    U    

Linked RDDs
===========
   DBF
   DBFFPT
   DBFBLOB
   DBFCDX
   DBFNTX

DataBases in use
================

Classes in use:
===============
     1 ERROR
     2 HBCLASS
     3 HBOBJECT
     4 TWINDOW
     5 TCONTROL
     6 TGET
     7 TDIALOG
     8 TBRUSH
     9 GET
    10 TCLIPGET
    11 TBUTTON
    12 TFONT
    13 TRECT
    14 TBITMAP
    15 TICON
    16 TMDIFRAME
    17 TMENU
    18 TMENUITEM
    19 TMDICLIENT
    20 TMSGBAR
    21 TBAR
    22 TMSGITEM
    23 TTIMER
    24 TREG32

Memory Analysis
===============
      256 Static variables

   Dynamic memory consume:
      Actual  Value:          0 bytes
      Highest Value:          0 bytes




Saludos

Atte: Adrian C. C.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Deshabilitar opciones menu....

Postby joseluisysturiz » Tue Apr 26, 2016 6:12 pm

Si no me equivoco, ese error es que estas manejando algo que no esta definido...no existe...revisa TMENU, saludos... :shock:

Message not found: TMENU:OITEM
Args:
[ 1] = O TMENU
Last edited by joseluisysturiz on Tue Apr 26, 2016 8:18 pm, edited 1 time in total.
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Deshabilitar opciones menu....

Postby ACC69 » Tue Apr 26, 2016 6:39 pm

joseluisysturiz wrote:Si no me equivoco, ese error es que estas manejando un objeto que no esta definido...no existe...revisa de donde proviene TMENU, saludos... :shock:

Message not found: TMENU:OITEM
Args:
[ 1] = O TMENU



Hola este error viene de la clase propia de fivewin,bueno creo que lo dejare usando variables logicas,por lo que veo funciona sin problemas y creo que es la manera de usar las opciones de cada modulo deshabilitar y habilitar .

Gracias Ing. Jose Luis que por cierto no me llego a mi correo el archivo adjunto.

Saludos

Atte: Adrian C. C.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Deshabilitar opciones menu....

Postby cnavarro » Tue Apr 26, 2016 7:07 pm

Adrian
El error que te da es porque

MENUITEM oItem[02] PROMPT "Cerrar empresa" Action Calcula() When oMenu:oItem[01] >1 ; // Por aca asi lo hacia pero me marcaba error
MESSAGE "Cerrar empresa"


no es una DATA de la clase oMenu ( TMENU ), al margen de que la clausula WHEN espera la evaluacion de cualquier expresion que devuelva un valor logico

La DATA que contiene todos los Items de un MENU es aMenuItems ( ARRAY )
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Deshabilitar opciones menu....

Postby ACC69 » Tue Apr 26, 2016 10:18 pm

cnavarro wrote:Adrian
El error que te da es porque

MENUITEM oItem[02] PROMPT "Cerrar empresa" Action Calcula() When oMenu:oItem[01] >1 ; // Por aca asi lo hacia pero me marcaba error
MESSAGE "Cerrar empresa"


no es una DATA de la clase oMenu ( TMENU ), al margen de que la clausula WHEN espera la evaluacion de cualquier expresion que devuelva un valor logico

La DATA que contiene todos los Items de un MENU es aMenuItems ( ARRAY )



Gracias Ing. Cristobal por su atencion, al final opte por usar variable logica en los programas.


Saludos

Atte: Adrian C. C.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Deshabilitar opciones menu....

Postby russimicro » Thu Apr 28, 2016 1:09 pm

Code: Select all  Expand view  RUN

   MENU oMenu 2007

       DO WHILE MEN->( !EOF() )

          HB_IDLESTATE()

          cNroOpc := ALLTRIM(MEN->cNroOpcSeg) // opción codificada para validar con las opciones activadas del usuario

          IF ValidaOpcionUsuario(cNroOpc)
             MENUITEM HB_OEMTOANSI( ALLTRIM(MEN->cNombreMen) )
          ELSE
             MENUITEM HB_OEMTOANSI( ALLTRIM(MEN->cNombreMen) ) DISABLED
          ENDIF

          MENU
            MENUX(1)
          ENDMENU

       ENDDO

   ENDMENU


FUNCTION MENUX( nNroNiv )

   LOCAL bBloEje, nNivAct
   LOCAL cNroOpc := ""

   nNivAct := SUBS( MEN->cCodigoMen, 1, nNroNiv * 2 )
   DO WHILE MEN->( !EOF() ) .AND. SUBS( MEN->cCodigoMen,1,nNroNiv * 2 ) == nNivAct

      IF LEN(ALLTRIM(MEN->cCodigoMen)) > nNroNiv * 2
         cFunEje := MEN->cFunEjeMen
         cNomOpc := HB_OEMTOANSI(MEN->cNombreMen)
         cRegAct := ALLTRIM(MEN->cCodigoMen)
         cNroOpc := ALLTRIM(MEN->cNroOpcSeg)
         MEN->( DBSKIP() )
         cRegSig := SUBS( MEN->cCodigoMen,1,( nNroNiv + 1 ) * 2 )

         IF cRegAct == cRegSig

            IF ValidaOpcionUsuario(cNroOpc)  // cRegAct
               MENUITEM ( ALLTRIM(cNomOpc) )
            ELSE
               MENUITEM ( ALLTRIM(cNomOpc) ) DISABLED
            ENDIF

            SELECT MEN
            SKIP -1
            MENU
              MenuX( nNroNiv + 1 )
            ENDMENU

         ELSE  //RESTMENU("T"));

            bBloEje := &( "{||" + IF( EMPTY( cFunEje ), ".T.", ALLTRIM( cFunEje ) ) + "}" )

            //bBloEj2 := &( "{||" + SHOWMENU() + "}" )

            IF ValidaOpcionUsuario(cNroOpc)
               MENUITEM ( ALLTRIM(cNomOpc) ) ACTION ( bBloEje  )   BLOCK  (bBloEje) // FILENAME getImage( BITMAP )
            ELSE
               MENUITEM ( ALLTRIM(cNomOpc) ) DISABLED ACTION ( bBloEje  )  BLOCK ( bBloEje)  // FILENAME getImage( BITMAP )
            ENDIF

         ENDIF
      ELSE
         MEN->( DBSKIP() )
      ENDIF

   ENDDO

RETURN  NIL


//**********************************************


 
russimicro
 
Posts: 261
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: Deshabilitar opciones menu....

Postby ACC69 » Tue May 03, 2016 8:16 pm

russimicro wrote:
Code: Select all  Expand view  RUN

   MENU oMenu 2007

       DO WHILE MEN->( !EOF() )

          HB_IDLESTATE()

          cNroOpc := ALLTRIM(MEN->cNroOpcSeg) // opción codificada para validar con las opciones activadas del usuario

          IF ValidaOpcionUsuario(cNroOpc)
             MENUITEM HB_OEMTOANSI( ALLTRIM(MEN->cNombreMen) )
          ELSE
             MENUITEM HB_OEMTOANSI( ALLTRIM(MEN->cNombreMen) ) DISABLED
          ENDIF

          MENU
            MENUX(1)
          ENDMENU

       ENDDO

   ENDMENU


FUNCTION MENUX( nNroNiv )

   LOCAL bBloEje, nNivAct
   LOCAL cNroOpc := ""

   nNivAct := SUBS( MEN->cCodigoMen, 1, nNroNiv * 2 )
   DO WHILE MEN->( !EOF() ) .AND. SUBS( MEN->cCodigoMen,1,nNroNiv * 2 ) == nNivAct

      IF LEN(ALLTRIM(MEN->cCodigoMen)) > nNroNiv * 2
         cFunEje := MEN->cFunEjeMen
         cNomOpc := HB_OEMTOANSI(MEN->cNombreMen)
         cRegAct := ALLTRIM(MEN->cCodigoMen)
         cNroOpc := ALLTRIM(MEN->cNroOpcSeg)
         MEN->( DBSKIP() )
         cRegSig := SUBS( MEN->cCodigoMen,1,( nNroNiv + 1 ) * 2 )

         IF cRegAct == cRegSig

            IF ValidaOpcionUsuario(cNroOpc)  // cRegAct
               MENUITEM ( ALLTRIM(cNomOpc) )
            ELSE
               MENUITEM ( ALLTRIM(cNomOpc) ) DISABLED
            ENDIF

            SELECT MEN
            SKIP -1
            MENU
              MenuX( nNroNiv + 1 )
            ENDMENU

         ELSE  //RESTMENU("T"));

            bBloEje := &( "{||" + IF( EMPTY( cFunEje ), ".T.", ALLTRIM( cFunEje ) ) + "}" )

            //bBloEj2 := &( "{||" + SHOWMENU() + "}" )

            IF ValidaOpcionUsuario(cNroOpc)
               MENUITEM ( ALLTRIM(cNomOpc) ) ACTION ( bBloEje  )   BLOCK  (bBloEje) // FILENAME getImage( BITMAP )
            ELSE
               MENUITEM ( ALLTRIM(cNomOpc) ) DISABLED ACTION ( bBloEje  )  BLOCK ( bBloEje)  // FILENAME getImage( BITMAP )
            ENDIF

         ENDIF
      ELSE
         MEN->( DBSKIP() )
      ENDIF

   ENDDO

RETURN  NIL


//**********************************************


 



Gracias Ing. Russimicro.

Saludos

Atte: Adrian C. C.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 64 guests