FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Rehacer menu en tiempo de ejecucion
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Rehacer menu en tiempo de ejecucion
Posted: Sun Dec 23, 2018 06:12 PM

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

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Rehacer menu en tiempo de ejecucion
Posted: Sun Dec 23, 2018 09:19 PM
Quizás con SetMenu una vez que hayas modificado el menú

Code (fw): Select all Collapse
oWnd : SetMenu( MiMenu() )


Saludos
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Rehacer menu en tiempo de ejecucion
Posted: Sun Dec 23, 2018 10:08 PM
horacio wrote:Quizás con SetMenu una vez que hayas modificado el menú

Code (fw): Select all Collapse
oWnd : SetMenu( MiMenu() )


Saludos


No funciona. Aca mi menu

MENU01.PRG


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

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Rehacer menu en tiempo de ejecucion
Posted: Sun Dec 23, 2018 11:18 PM
Prueba así

Code (fw): Select all Collapse
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
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Rehacer menu en tiempo de ejecucion
Posted: Mon Dec 24, 2018 12:55 AM

Horacio,

Esta solucion no funciono :cry:

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: Rehacer menu en tiempo de ejecucion
Posted: Mon Dec 24, 2018 06:44 AM
Code (fw): Select all Collapse
oWnd :SetMenu( NIL ) // Destruyes el Menu

oWnd :SetMenu( BuildMenu() ) // Rehacer el menú
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Rehacer menu en tiempo de ejecucion
Posted: Mon Dec 24, 2018 11:19 AM
Esto funciona para mi

Code (fw): Select all Collapse
#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
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Rehacer menu en tiempo de ejecucion
Posted: Mon Dec 24, 2018 12:21 PM
Code (fw): Select all Collapse
..ACTION ( oWnd:SetMenu( oMenu2 ), oWnd:Refresh() )

works.

This sample works for me
Code (fw): Select all Collapse
#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
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Rehacer menu en tiempo de ejecucion
Posted: Tue Dec 25, 2018 09:27 PM
Otra posibilidad

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

//----------------------------------------------------------------------------//
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: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Rehacer menu en tiempo de ejecucion
Posted: Wed Dec 26, 2018 12:07 AM

Muchas gracias a todos por su amable colaboracion

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Rehacer menu en tiempo de ejecucion
Posted: Wed Dec 26, 2018 09:36 PM
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... :-)
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Rehacer menu en tiempo de ejecucion
Posted: Mon Jan 07, 2019 02:49 AM
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... :-)
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Rehacer menu en tiempo de ejecucion
Posted: Mon Jan 07, 2019 12:42 PM
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... :-)


Jose Luis,

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

Saludos

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Continue the discussion