FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Deshabilitar opciones menu....(Solucionado)
Posts: 632
Joined: Tue Dec 12, 2006 07:34 PM
Deshabilitar opciones menu....(Solucionado)
Posted: Fri Apr 22, 2016 09: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:






<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 (fw): Select all Collapse
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 (fw): Select all Collapse
// --- 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.
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Deshabilitar opciones menu....
Posted: Fri Apr 22, 2016 09: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
Posts: 632
Joined: Tue Dec 12, 2006 07:34 PM
Re: Deshabilitar opciones menu....
Posted: Mon Apr 25, 2016 04: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.
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Deshabilitar opciones menu....
Posted: Tue Apr 26, 2016 05:11 AM
Saludos, la idea que te sugiere Navarro es esta...
Code (fw): Select all Collapse
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... :-)
Dios no est谩 muerto...



Gracias a mi Dios ante todo!
Posts: 632
Joined: Tue Dec 12, 2006 07:34 PM
Re: Deshabilitar opciones menu....
Posted: Tue Apr 26, 2016 04:41 PM
joseluisysturiz wrote:Saludos, la idea que te sugiere Navarro es esta...
Code (fw): Select all Collapse
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... :-)



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 (fw): Select all Collapse
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.
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Deshabilitar opciones menu....
Posted: Tue Apr 26, 2016 04:58 PM
ACC69 wrote:
joseluisysturiz wrote:Saludos, la idea que te sugiere Navarro es esta...
Code (fw): Select all Collapse
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... :-)



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 (fw): Select all Collapse
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... :-)
Dios no est谩 muerto...



Gracias a mi Dios ante todo!
Posts: 632
Joined: Tue Dec 12, 2006 07:34 PM
Re: Deshabilitar opciones menu....
Posted: Tue Apr 26, 2016 05:16 PM
joseluisysturiz wrote:
ACC69 wrote:
joseluisysturiz wrote:Saludos, la idea que te sugiere Navarro es esta...
Code (fw): Select all Collapse
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... :-)



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 (fw): Select all Collapse
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... :-)




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

Code (fw): Select all Collapse
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.
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Deshabilitar opciones menu....
Posted: Tue Apr 26, 2016 06: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

Dios no est谩 muerto...



Gracias a mi Dios ante todo!
Posts: 632
Joined: Tue Dec 12, 2006 07:34 PM
Re: Deshabilitar opciones menu....
Posted: Tue Apr 26, 2016 06: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... :-)

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.
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Deshabilitar opciones menu....
Posted: Tue Apr 26, 2016 07: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
Posts: 632
Joined: Tue Dec 12, 2006 07:34 PM
Re: Deshabilitar opciones menu....
Posted: 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.
Posts: 410
Joined: Sun Jan 31, 2010 03:30 PM
Re: Deshabilitar opciones menu....
Posted: Thu Apr 28, 2016 01:09 PM
Code (fw): Select all Collapse
聽 聽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


//**********************************************
Posts: 632
Joined: Tue Dec 12, 2006 07:34 PM
Re: Deshabilitar opciones menu....
Posted: Tue May 03, 2016 08:16 PM
russimicro wrote:
Code (fw): Select all Collapse
聽 聽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.

Continue the discussion