Menú a Prueba de Neo
Publicado por Plinio (7841 intervenciones) el 25/05/2007 00:14:38
Trata de tener un form1 y un form2 ahi para probar
**********************************
SET CLASSLIB TO OwnerDrawn_Menu
Barra_menu = CREATEOBJECT('PopupMenu')
Barra_menu.hWndParent = _VFP.hWnd &&El manejador de esa ventana --> IMPORTANTE
***Primero arreglo de la barra principal
DIMENSION barra_menu.amenupad(3,2) &&La barra tendra 3 opciones
barra_menu.amenupad[1,1]= "Entradas de Datos"
barra_menu.amenupad[1,2]= "E" &&Este sera funciona con ALT+E
barra_menu.amenupad[2,1]= "Reportes"
barra_menu.amenupad[2,2]= "R"
barra_menu.amenupad[3,1]= "Salir"
barra_menu.amenupad[3,2]= "S"
barra_menu.CreatePad()
**Primer de este ejemplo
barra_menu.CreatePopupItem(3) &&Contendra 3 opciones
barra_menu.aPopupItem[1] = 'Registro Clientes'
barra_menu.aPopupItem[2] = 'Registro Articulos'
barra_menu.aPopupItem[3] = 'Registro Suplidores'
barra_menu.CreatePopup( 1001, 1 ) &&1001 es como la numeracion que identifia este popup, el de reporte podria ser 2001
**2do Popup de este ejemplo
barra_menu.CreatePopupItem(2) &&Contendra 2 opciones
barra_menu.aPopupItem[1] = 'Reporte Cliente'
barra_menu.aPopupItem[2] = 'Reporte Articulos'
barra_menu.CreatePopup( 2001, 2 ) &&2001 es como la numeracion que identifia este popup, el de reporte podria ser 2001
**3er popup
barra_menu.CreatePopupItem(1) &&Contendra 1 opcion
barra_menu.aPopupItem[1] = 'Salir'
barra_menu.CreatePopup( 3001, 3 ) &&3001 salir
** Set Submenu to MainMenu
barra_menu.SetSubmenu( 1, 1 ) &&Pega al primera Opcion al primer menu (entrada de datos
barra_menu.SetSubmenu( 2, 2 ) &&pega 2 opcion al 2 (Reportes)
barra_menu.SetSubmenu( 3, 3 ) &&&&pega 3 opcion al menu 3 (salir)
barra_menu.BindMessages()
Activate menu (barra_menu.cMenuName) nowait
Read events
Procedure OnSelection( tn_MenuPos, tn_ItemId )
**OJO al Aqui pregunta al seleccionar la opcion dependiendo del menu qu tengas
Do case
&&MyMenu1 Es un procedimiento que pregunta por todas las opciones del Menu de Entradas de datos
Case (tn_MenuPos == 1)
MyMenu1( tn_MenuPos, tn_ItemId - 1000 )
&&MyMenu2 Es un procedimiento que pregunta por todas las opciones del Menu de Reportes
Case (tn_MenuPos == 2)
MyMenu2( tn_MenuPos, tn_ItemId - 2000 )
Otherwise
CLEAR EVENTS &&Parto de que presionaste Salir
EndCase
EndProc
Procedure MyMenu1( tn_MenuPos, tn_ItemPos )
Local lc_Msg
Do case
Case (tn_ItemPos == 1)
Do form Form1 with tn_MenuPos, tn_ItemPos &&Aqui llamo a form1
Case (tn_ItemPos == 2)
Do form Form2 with tn_MenuPos, tn_ItemPos &&Aqui llamo a form2
OTHERWISE
=MESSAGEBOX('No tengo ese formulario',0+16,'Aviso')
ENDCASE
EndProc
Procedure MyMenu2( tn_MenuPos, tn_ItemPos )
=MESSAGEBOX('no hice nada aqui')
EndProc
**********************************
SET CLASSLIB TO OwnerDrawn_Menu
Barra_menu = CREATEOBJECT('PopupMenu')
Barra_menu.hWndParent = _VFP.hWnd &&El manejador de esa ventana --> IMPORTANTE
***Primero arreglo de la barra principal
DIMENSION barra_menu.amenupad(3,2) &&La barra tendra 3 opciones
barra_menu.amenupad[1,1]= "Entradas de Datos"
barra_menu.amenupad[1,2]= "E" &&Este sera funciona con ALT+E
barra_menu.amenupad[2,1]= "Reportes"
barra_menu.amenupad[2,2]= "R"
barra_menu.amenupad[3,1]= "Salir"
barra_menu.amenupad[3,2]= "S"
barra_menu.CreatePad()
**Primer de este ejemplo
barra_menu.CreatePopupItem(3) &&Contendra 3 opciones
barra_menu.aPopupItem[1] = 'Registro Clientes'
barra_menu.aPopupItem[2] = 'Registro Articulos'
barra_menu.aPopupItem[3] = 'Registro Suplidores'
barra_menu.CreatePopup( 1001, 1 ) &&1001 es como la numeracion que identifia este popup, el de reporte podria ser 2001
**2do Popup de este ejemplo
barra_menu.CreatePopupItem(2) &&Contendra 2 opciones
barra_menu.aPopupItem[1] = 'Reporte Cliente'
barra_menu.aPopupItem[2] = 'Reporte Articulos'
barra_menu.CreatePopup( 2001, 2 ) &&2001 es como la numeracion que identifia este popup, el de reporte podria ser 2001
**3er popup
barra_menu.CreatePopupItem(1) &&Contendra 1 opcion
barra_menu.aPopupItem[1] = 'Salir'
barra_menu.CreatePopup( 3001, 3 ) &&3001 salir
** Set Submenu to MainMenu
barra_menu.SetSubmenu( 1, 1 ) &&Pega al primera Opcion al primer menu (entrada de datos
barra_menu.SetSubmenu( 2, 2 ) &&pega 2 opcion al 2 (Reportes)
barra_menu.SetSubmenu( 3, 3 ) &&&&pega 3 opcion al menu 3 (salir)
barra_menu.BindMessages()
Activate menu (barra_menu.cMenuName) nowait
Read events
Procedure OnSelection( tn_MenuPos, tn_ItemId )
**OJO al Aqui pregunta al seleccionar la opcion dependiendo del menu qu tengas
Do case
&&MyMenu1 Es un procedimiento que pregunta por todas las opciones del Menu de Entradas de datos
Case (tn_MenuPos == 1)
MyMenu1( tn_MenuPos, tn_ItemId - 1000 )
&&MyMenu2 Es un procedimiento que pregunta por todas las opciones del Menu de Reportes
Case (tn_MenuPos == 2)
MyMenu2( tn_MenuPos, tn_ItemId - 2000 )
Otherwise
CLEAR EVENTS &&Parto de que presionaste Salir
EndCase
EndProc
Procedure MyMenu1( tn_MenuPos, tn_ItemPos )
Local lc_Msg
Do case
Case (tn_ItemPos == 1)
Do form Form1 with tn_MenuPos, tn_ItemPos &&Aqui llamo a form1
Case (tn_ItemPos == 2)
Do form Form2 with tn_MenuPos, tn_ItemPos &&Aqui llamo a form2
OTHERWISE
=MESSAGEBOX('No tengo ese formulario',0+16,'Aviso')
ENDCASE
EndProc
Procedure MyMenu2( tn_MenuPos, tn_ItemPos )
=MESSAGEBOX('no hice nada aqui')
EndProc
Valora esta pregunta


0