Esta es una simpre curiosidad:
Tengo dos programas:
MainSis.prg
Code: Select all | Expand
#include "Fivewin.ch"
Static oWnd
Function Main()
DEFINE WINDOW oWnd TITLE "Sistema..." ;
MENU MenuSistema( oWnd )
ACTIVATE WINDOW oWnd MAXIMIZED ;
VALID MsgNoYes( "Desea salir del Sistema","Confirme por favor" )
RETURN NIL
MenuSis.prg
Code: Select all | Expand
#include "Fivewin.ch"
Function MenuSistema( oWndSys )
Local oMenu
MENU oMenu
MENUITEM "&Reportes" MESSAGE "Reportes del Sistema" //ACTION
MENU
MENUITEM "Reporte &1" MESSAGE "Reporte No. 1 del Sistema" //ACTION
SEPARATOR
MENUITEM "&Salir" MESSAGE "Salir del Sistema" ACTION oWndSys:End()
ENDMENU
ENDMENU
RETURN oMenu
Obtengo el siguiente error, cuando utilizo la opción "Salir" del Menu (Pero si cierro el sistema con Alt+F4, no hay ningun error y hace la pregunta respectiva).
Code: Select all | Expand
Error Class: 'NIL' has no exported method: END
Llamado desde MYERROR( 84 ) en el modulo: ErrorSys.C
Llamado desde (b)ERRORSYS( 20 ) en el modulo: ErrorSys.C
Llamado desde END( 0 )
Llamado desde (b)MENUSISTEMA( 11 ) en el modulo: menu.C
Llamado desde TMENU:COMMAND( 0 ) en el modulo: MENU.C
Llamado desde TWINDOW:COMMAND( 0 ) en el modulo: WINDOW.C
Llamado desde TWINDOW:HANDLEEVENT( 0 )
Llamado desde WINRUN( 0 )
Llamado desde TWINDOW:ACTIVATE( 0 ) en el modulo: WINDOW.C
Llamado desde MAIN( 11 ) en el modulo: tsgsis.C
Ahora bien, si el prg MainSis.prg cambio la forma de instanciar el Menu de la siguiete forma:
Code: Select all | Expand
#include "Fivewin.ch"
Static oWnd
Function Main()
Local oMenu
DEFINE WINDOW oWnd TITLE "TSG-Sistema"
oMenu := MenuSistema( oWnd )
oWnd:SetMenu( oMenu )
ACTIVATE WINDOW oWnd MAXIMIZED ;
VALID MsgNoYes( "Desea salir del Sistema","Confirme por favor" )
RETURN NIL
Si funciona correctamente salir del sistema con la opción Salir del Menu.
La pregunta es; Porqué no funciona correctamente el primer programa? si según la lógica esta correcto todo?
Si alguien puede probar los ejemplos y le sucede lo mismo, me gustaría me contara.
Saludos cordiales.
Carlos Sincuir