Rehacer menu en tiempo de ejecucion

Post Reply
Compuin
Posts: 1017
Joined: Tue Dec 28, 2010 1:29 pm

Rehacer menu en tiempo de ejecucion

Post 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
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Rehacer menu en tiempo de ejecucion

Post by horacio »

Quizás con SetMenu una vez que hayas modificado el menú

Code: Select all

oWnd : SetMenu( MiMenu() )
 
Saludos
Compuin
Posts: 1017
Joined: Tue Dec 28, 2010 1:29 pm

Re: Rehacer menu en tiempo de ejecucion

Post by Compuin »

horacio wrote:Quizás con SetMenu una vez que hayas modificado el menú

Code: Select all

oWnd : SetMenu( MiMenu() )
 
Saludos
No funciona. Aca mi menu

MENU01.PRG

Code: Select all

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

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
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Rehacer menu en tiempo de ejecucion

Post by horacio »

Prueba así

Code: Select all

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
Compuin
Posts: 1017
Joined: Tue Dec 28, 2010 1:29 pm

Re: Rehacer menu en tiempo de ejecucion

Post by Compuin »

Horacio,

Esta solucion no funciono :cry:
User avatar
jnavas
Posts: 399
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela
Contact:

Re: Rehacer menu en tiempo de ejecucion

Post by jnavas »

Code: Select all


oWnd :SetMenu( NIL ) // Destruyes el Menu

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


 
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Rehacer menu en tiempo de ejecucion

Post by horacio »

Esto funciona para mi

Code: Select all

#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
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Rehacer menu en tiempo de ejecucion

Post by nageswaragunupudi »

Code: Select all

..ACTION ( oWnd:SetMenu( oMenu2 ), oWnd:Refresh() )
works.

This sample works for me

Code: Select all

#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
 
Regards

G. N. Rao.
Hyderabad, India
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Rehacer menu en tiempo de ejecucion

Post by cnavarro »

Otra posibilidad

Code: Select all


#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

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

 
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Compuin
Posts: 1017
Joined: Tue Dec 28, 2010 1:29 pm

Re: Rehacer menu en tiempo de ejecucion

Post by Compuin »

Muchas gracias a todos por su amable colaboracion
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: Rehacer menu en tiempo de ejecucion

Post 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:
Dios no está muerto...

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

Re: Rehacer menu en tiempo de ejecucion

Post 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:
Dios no está muerto...

Gracias a mi Dios ante todo!
Compuin
Posts: 1017
Joined: Tue Dec 28, 2010 1:29 pm

Re: Rehacer menu en tiempo de ejecucion

Post 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
Post Reply