Page 1 of 1

Rehacer menu en tiempo de ejecucion

PostPosted: Sun Dec 23, 2018 6:12 pm
by Compuin
Saludos

Como puedo rehacer un menu que llame a otro para que lo reemplace en tiempo de ejecucion ? Por ejemplo, llamar desde una opcion del menu los reportes de almacen y los reemplace en una opcion reportes ya existente ?

Gracias de antemano

Re: Rehacer menu en tiempo de ejecucion

PostPosted: Sun Dec 23, 2018 9:19 pm
by horacio
Quizás con SetMenu una vez que hayas modificado el menú

Code: Select all  Expand view

oWnd : SetMenu( MiMenu() )
 


Saludos

Re: Rehacer menu en tiempo de ejecucion

PostPosted: Sun Dec 23, 2018 10:08 pm
by Compuin
horacio wrote:Quizás con SetMenu una vez que hayas modificado el menú

Code: Select all  Expand view

oWnd : SetMenu( MiMenu() )
 


Saludos


No funciona. Aca mi menu

MENU01.PRG


Code: Select all  Expand view
function BuildMenu()
   local oMenu, oMain

   MENU oMenu

     MENUITEM oMain PROMPT "Inicio  "
     MENUITEM oMain PROMPT "Tablas  "
     MENU
         MENUITEM "Bancos                 " ACTION BuildMnuBanco()
         MENUITEM "Almacen              " ACTION BuildMnuInventario()
     ENDMENU
     MENUITEM oMain PROMPT "Reportes  de Inventario "
     MENU
         MENUITEM "Reporte Inventario      "
         MENUITEM "Reporte Almacen        "
     ENDMENU
   ENDMENU

return oMenu


Al seleccionar la opcion de Bancos se deberia reemplazar todo el menu por este nuevo menu

MENU02.PRG

Code: Select all  Expand view
function BuildMnuBanco()
   local oMenu, oMain

   MENU oMenu

     MENUITEM oMain PROMPT "Inicio  "
     MENUITEM oMain PROMPT "Tablas  "
     MENU
         MENUITEM "Bancos                 " ACTION BuildMnuBanco()
         MENUITEM "Almacen              " ACTION BuildMnuInventario()
     ENDMENU
     MENUITEM oMain PROMPT "Reportes  de Bancos "
     MENU
         MENUITEM "Reporte Bancos      "
         MENUITEM "Reporte Cajas        "
     ENDMENU
   ENDMENU

return oMenu

Re: Rehacer menu en tiempo de ejecucion

PostPosted: Sun Dec 23, 2018 11:18 pm
by horacio
Prueba así

Code: Select all  Expand view

Function BuildMenu()
   
    Local oMenu
    Local oMain := Array( 7, 0 )

   MENU oMenu

     MenuItem oMain[ 1 ] Prompt "Inicio  "
     MenuItem oMain[ 2 ] Prompt "Tablas  "
     MENU
         MenuItem oMain[ 3 ] Prompt "Bancos"    Action BuildMnuBanco( oMain )
         MenuItem oMain[ 4 ] Prompt "Almacen" Action BuildMnuInventario( oMain )
     EndMenu
     MenuItem oMain[ 5 ] Prompt "Reportes  de Inventario "
     MENU
         MenuItem oMain[ 6 ] Prompt "Reporte Inventario      "
         MenuItem oMain[ 7 ] Prompt "Reporte Almacen        "
     EndMenu
   EndMenu
    Return oMenu
   
//----------------------------------------------------------------------------//
Function BuildMnuBanco( oMain )

    oMain[ 5 ] : SetText( "Reportes  de Bancos" )   
    oMain[ 6 ] : SetText( "Reporte Bancos" )   
    oMain[ 7 ] : SetText( "Reporte Cajas" )
    oMain[ 6 ] : bAction := { || ReporteBancos() } 
    oMain[ 7 ] : bAction := { || ReporteCajas() }   
    Return 0
   
//----------------------------------------------------------------------------//
Function BuildMnuInventario( oMain )

    oMain[ 5 ] : SetText( "Reportes  de Inventario" )   
    oMain[ 6 ] : SetText( "Reporte Inventario" )   
    oMain[ 7 ] : SetText( "Reporte Almacen" )
    oMain[ 6 ] : bAction := { || ReporteInventario() } 
    oMain[ 7 ] : bAction := { || ReporteAlmacen() } 
    Return 0   
 


Saludos

Re: Rehacer menu en tiempo de ejecucion

PostPosted: Mon Dec 24, 2018 12:55 am
by Compuin
Horacio,

Esta solucion no funciono :cry:

Re: Rehacer menu en tiempo de ejecucion

PostPosted: Mon Dec 24, 2018 6:44 am
by jnavas
Code: Select all  Expand view


oWnd :SetMenu( NIL ) // Destruyes el Menu

oWnd :SetMenu( BuildMenu() ) // Rehacer el menú


 

Re: Rehacer menu en tiempo de ejecucion

PostPosted: Mon Dec 24, 2018 11:19 am
by horacio
Esto funciona para mi

Code: Select all  Expand view

#include "fivewin.ch"
Static oWnd

//----------------------------------------------------------------------------//
Function Main()


    Define Window oWnd Menu BuildMenu()
   
    Activate Window oWnd Maximized
    Return 0

//----------------------------------------------------------------------------//
Function BuildMenu()
   
    Local oMenu
    Local oMain := Array( 7, 0 )

   MENU oMenu

     MenuItem oMain[ 1 ] Prompt "Inicio  "
     MenuItem oMain[ 2 ] Prompt "Tablas  "
     MENU
         MenuItem oMain[ 3 ] Prompt "Bancos"    Action BuildMnuBanco( oMain )
         MenuItem oMain[ 4 ] Prompt "Almacen" Action BuildMnuInventario( oMain )
     EndMenu
     MenuItem oMain[ 5 ] Prompt "Reportes  de Inventario "
     MENU
         MenuItem oMain[ 6 ] Prompt "Reporte Inventario      "
         MenuItem oMain[ 7 ] Prompt "Reporte Almacen        "
     EndMenu
   EndMenu
    Return oMenu
   
//----------------------------------------------------------------------------//
Function BuildMnuBanco( oMain )

    oMain[ 5 ] : SetText( "Reportes  de Bancos" )  
    oMain[ 6 ] : SetText( "Reporte Bancos" )    
    oMain[ 7 ] : SetText( "Reporte Cajas" )
    Return 0
   
//----------------------------------------------------------------------------//
Function BuildMnuInventario( oMain )

    oMain[ 5 ] : SetText( "Reportes  de Inventario" )  
    oMain[ 6 ] : SetText( "Reporte Inventario" )    
    oMain[ 7 ] : SetText( "Reporte Almacen" )
    Return 0    

 


Saludos

Re: Rehacer menu en tiempo de ejecucion

PostPosted: Mon Dec 24, 2018 12:21 pm
by nageswaragunupudi
Code: Select all  Expand view
..ACTION ( oWnd:SetMenu( oMenu2 ), oWnd:Refresh() )

works.

This sample works for me
Code: Select all  Expand view
#include "fivewin.ch"

function Main()

   local oWnd, oMenu1, oMenu2

   MENU oMenu1
      MENUITEM "One"
      MENUITEM "SetMenu-2" ACTION ( oWnd:SetMenu( oMenu2 ), oWnd:Refresh() )
   ENDMENU

   MENU oMenu2
      MENUITEM "Two"
      MENUITEM "SetMenu-1" ACTION ( oWnd:SetMenu( oMenu1 ), oWnd:Refresh() )
   ENDMENU

   DEFINE WINDOW oWnd MENU oMenu1
   ACTIVATE WINDOW ownd CENTERED

return nil
 

Re: Rehacer menu en tiempo de ejecucion

PostPosted: Tue Dec 25, 2018 9:27 pm
by cnavarro
Otra posibilidad

Code: Select all  Expand view


#include "Fivewin.ch"

Static oWnd

Function Main()

   DEFINE WINDOW oWnd TITLE "Change Menu " + FWVERSION MENU BuildMenu()

   ACTIVATE WINDOW oWnd MAXIMIZED

Return nil

//----------------------------------------------------------------------------//

Function BuildMenu( n )

   local oMenu
   DEFAULT n   := 1

   MENU oMenu
      MENUITEM "Inicio"
         MENU
            MENUITEM "Salir" ACTION oWnd:End()
         ENDMENU
      MENUITEM "Tablas"
      MENU
          MENUITEM "Bancos " ACTION ChangeMenu( 2 )
          MENUITEM "Almacen" ACTION ChangeMenu( 1 )
      ENDMENU

      Do Case
         Case n = 1
            MENUITEM "Reportes  de Inventario"
            MENU
               MENUITEM "Reporte Inventario"
               MENUITEM "Reporte Almacen"
            ENDMENU
         Case n = 2
            MENUITEM "Reportes de Bancos"
            MENU
               MENUITEM "Reporte Bancos"
               MENUITEM "Reporte Cajas"
            ENDMENU
      EndCase

   ENDMENU

Return oMenu

//----------------------------------------------------------------------------//

Function ChangeMenu( n )

   oWnd:SetMenu( BuildMenu( n ) )

Return nil

//----------------------------------------------------------------------------//

 

Re: Rehacer menu en tiempo de ejecucion

PostPosted: Wed Dec 26, 2018 12:07 am
by Compuin
Muchas gracias a todos por su amable colaboracion

Re: Rehacer menu en tiempo de ejecucion

PostPosted: Wed Dec 26, 2018 9:36 pm
by joseluisysturiz
Compuin wrote:Muchas gracias a todos por su amable colaboracion

Saludos, estoy en lo mismo que tu al paracer, podrias compartir lo realizado para tomar ideas y si es posible hacer mejoras y compartirlo.? mi correo joseluisysturiz@yahoo.com, gracias, saludos... :shock:

Re: Rehacer menu en tiempo de ejecucion

PostPosted: Mon Jan 07, 2019 2:49 am
by joseluisysturiz
Compuin wrote:Muchas gracias a todos por su amable colaboracion


Saludos, no se si no has leido el mensaje, a ver si podrias compartir lo que hicistes o has hecho ya que ando en algo parecido pero con MYSQL...claro, si quieres compartirlo, mi correo es joseluisysturiz@yaoo.com, gracias, saludos... :shock:

Re: Rehacer menu en tiempo de ejecucion

PostPosted: Mon Jan 07, 2019 12:42 pm
by Compuin
joseluisysturiz wrote:
Compuin wrote:Muchas gracias a todos por su amable colaboracion


Saludos, no se si no has leido el mensaje, a ver si podrias compartir lo que hicistes o has hecho ya que ando en algo parecido pero con MYSQL...
claro, si quieres compartirlo,
mi correo es joseluisysturiz@yaoo.com, gracias, saludos... :shock:


Jose Luis,

No crees que eres un poco grosero en la manera como pides las cosas ?

Saludos