FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Comportamiento anómalo en barra de menú
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Comportamiento anómalo en barra de menú
Posted: Wed Nov 10, 2010 10:06 AM

Hola a todos

He notado un comportamiento un tanto raro en la barra de menú de una de mis aplicaciones.
El caso es que si al primer ÍTEM de la barra le añado un submenú, al ir a cualquier opción que tenga una ventana MDICHILD con una butonbar, me borra el penúltimo ítem del menú y me añade al anterior una opción que yo no pongo, es decir, que si tengo diez ítems me borra el noveno y en el octavo, en su submenú me añade un ítem más.
Por ejemplo, el octavo ítem es IVA y tiene dos opciones, diario y listado de iva, el noveno ítem es útiles y tiene tres opciones de submenú. Bien, escojo del menú la opción clientes que tiene una ventana mdichild, me hace desaparecer el ítem útiles, y me pone un cuadro de color gris, si pincho en él me sale el octavo ítem (IVA) y me añade la opción 1 fichero de clientes, con el icono de opción elegida en su parte izquierda.
No obstante si al primer ítem le quito las opciones del submenú , esto no me lo hace.

¿Alguien sabe el motivo de esto?

Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Posts: 601
Joined: Wed Jul 04, 2007 03:51 PM
Re: Comportamiento anómalo en barra de menú
Posted: Wed Nov 10, 2010 11:47 AM

Pedro...
Posiblemente lo estés definiendo mal...
Pone aquí la definición de tu Menú y lo analizamos.

Saludos, Esteban.

Ojeda Esteban Eduardo.

Buenos Aires - Argentina.

FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport

Skype: jreduojeda
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Re: Comportamiento anómalo en barra de menú
Posted: Wed Nov 10, 2010 12:52 PM
Hola Esteban
No creo que lo esté definiendo mal, ya que los defino igual en otros programas. El tema está en poner o no opciones en el primer ítem del menú. No obstante te lo pongo.

Code (fw): Select all Collapse
#include "FiveWin.ch"
#include "menu.ch"

STATIC oBarMain,oMenu
EXTERNAL DBFCDX
//----------------------------------------------------------------------------//
// INICIO DEL PROGRAMA PRINCIPAL
//----------------------------------------------------------------------------//

Function Main()

   Local oBmp
   Local oIco,aCorH[2]
   Local hDlib
   Local aoBtn[10] , oBoton
   Local oPopMenu[9]
  
   Public  oWmain, oFont
   Public  xArea, cArea := "", cTempArea := "",aDatEmp[0]

   SetHandleCount( 120 )
   REQUEST HB_LANG_ES // Para establecer español para Mensajes, fechas, etc..
   REQUEST DBFCDX
   RDDSETDEFAULT("DBFCDX")

   SET DATE TO ITALIAN
   SET DELETE ON
   SET CENTURY ON
   SET 3DLOOK ON
   SET AUTOPEN OFF
   SetDialogEsc(.f.)
   HB_LangSelect('ES')
   HB_SetCodePage("ESMWIN")
   hDlib := LoadLibrary("bwcc32.dll")
   BWCCRegister( GetResources() )
   cTempArea := "C:\TEMPROG"
   
   If !lIsdir(cTempArea)
      lMkdir(cTempArea)
   EndIf
   cTempArea := "C:\TEMPROG\"
      
   DEFINE FONT   oFont NAME "Ms Sans Serif" SIZE 0, -11
   DEFINE ICON   oIco  FILENAME ".\BMP\GAETE.ICO"
   If File(".\BMP\LOGOEMP.JPG")
      oBmp := TImage():Define( , ".\BMP\LOGOEMP.jpg" )
   Else
      oBmp := TImage():Define( , ".\BMP\LOGOGEN.jpg" )
   EndIf     
   SetBalloon( .T. )  

   DEFINE WINDOW oWMain MDI FROM 02, 02 TO ( MaxRow() - 2 ), ( MaxCol() - 10 );
          TITLE "GESTIÓN DE CÁRNICAS"  ;
          ICON oIco;
          MENU MainMenu()

   SET FONT OF oWMain TO oFOnt
   SET MESSAGE OF oWMain TO "GESTIÓN DE CÁRNICAS" CENTERED TIME DATE KEYBOARD 2007
   oWMain:bPainted := {|hDC| PalBmpDraw( hDC, 0, 0, oBmp:hBitmap,, oWMain:nWidth, oWMain:nHeight,, .T.) }


      DEFINE BUTTONBAR oBarMain OF oWMain SIZE 70, 55 2007
       
      MENU oPopMenu[1] POPUP 2007
           MENUITEM "Ejercicios" ACTION EscogeArea()
           MENUITEM "Empresas" //ACTION Empresas(oBarMain,oMenu)
      ENDMENU     
      DEFINE BUTTON aoBtn[1] OF oBarMain ACTION aoBtn[1]:ShowPopup() ;
      RESOURCE "EMPRESAS" PROMPT "EMPRESAS" GROUP ;
      MENU oPopMenu[1] TOOLTIP "Area de trabajo"
          
       MENU oPopMenu[2] POPUP 2007
            MENUITEM "Clientes" ACTION CLIENTES(oBarMain,oMenu)
            MENUITEM "Articulos" ACTION ARTICULOS(oBarMain,oMenu)
            MENUITEM "Proveedores" ACTION PROVEEDORES(oBarMain,oMenu)
            MENUITEM "Comerciales" ACTION COMERCIALES(oBarMain,oMenu)
            MENUITEM "Cobradores" ACTION COBRADORES(oBarMain,oMenu)
            MENUITEM "Repartidores" ACTION REPARTIDORES(oBarMain,oMenu)
            MENUITEM "Destos. Especiales" ACTION DESCTOESPE(oBarMain,oMenu)
            MENUITEM "Tipos de Iva" ACTION TIPOSIVA(oBarMain,oMenu)
            MENUITEM "Mensajes Albarán" ACTION MENSAJES(oBarMain,oMenu)
       ENDMENU
       
       DEFINE BUTTON aoBtn[2] OF oBarMain ACTION aoBtn[2]:ShowPopup(); 
         RESOURCE "FICHEROS" PROMPT "FICHEROS" GROUP ;
         MENU oPopMenu[2] TOOLTIP "Ficheros generales"
  
       MENU oPopMenu[3] POPUP 2007
            MENUITEM "Entrada de Albaranes" ACTION ALBARANES(oBarMain,oMenu)
            MENUITEM "Modificación de Albaranes" ACTION MODIFIALBAR(oBarMain,oMenu)
            MENUITEM "Consulta de Albaranes" ACTION CONSALBA(oBarMain,oMenu)
            SEPARATOR
            MENUITEM "Repetir Albaranes" ACTION REPITEALB(oBarMain,oMenu )
            SEPARATOR
            MENUITEM "Listado de Albaranes" ACTION LISTALBAR(oBarMain,oMenu )
       ENDMENU
       DEFINE BUTTON aoBtn[3] OF oBarMain ACTION aoBtn[3]:ShowPopup() ;
         RESOURCE "ALBARANES" PROMPT "ALBARANES" GROUP ; 
         MENU oPopMenu[3] TOOLTIP "Gestión de albaranes"

       MENU oPopMenu[4] POPUP 2007
            MENUITEM "Facturas de Albaranes" ACTION FACTURALBAR(oBarMain,oMenu)
            MENUITEM "Modificación de Facturas" ACTION MODIFIFACTU(oBarMain,oMenu)
            MENUITEM "Consulta de Facturas" ACTION CONSFACTU(oBarMain,oMenu)
            SEPARATOR
            MENUITEM "Factura Directa" ACTION FACTURAS(oBarMain,oMenu)
            SEPARATOR
            MENUITEM "Facturar un Albarán" ACTION FACTURAUNALBAR(oBarMain,oMenu)
            SEPARATOR
            MENUITEM "Repetir Facturas" ACTION REPITEFAC(oBarMain,oMenu )
            SEPARATOR
            MENUITEM "Listado de Facturas" ACTION LISFACTURAS(oBarMain,oMenu )
       ENDMENU
       DEFINE BUTTON aoBtn[4] OF oBarMain ACTION aoBtn[4]:ShowPopup();
       RESOURCE "FACTURAS" PROMPT "FACTURAS" GROUP  ; 
       MENU oPopMenu[4] TOOLTIP "Gestión de Facturas"

       MENU oPopMenu[5] POPUP 2007
            MENUITEM "Clientes sin Compras General" ACTION LISINCOMPRA(oBarMain,oMenu)
            MENUITEM "Clientes sin Compras por fechas" ACTION SINCOMPRAFECHA(oBarMain,oMenu)
            MENUITEM "Clientes sin Compras un día un reparto" ACTION SINCOMPRAUDUR(oBarMain,oMenu)
            SEPARATOR
            MENUITEM "Consumos de Clientes" ACTION CONSUMOCLIE(oBarMain,oMenu)
            MENUITEM "Kilos Mes de Clientes" ACTION HISTOCLIE(oBarMain,oMenu)
            SEPARATOR
            MENUITEM "Ventas de Artículos y Agentes" ACTION VENTAGEART(oBarMain,oMenu)
            MENUITEM "Kilos Mes de Artículos" ACTION HISTOART(oBarMain,oMenu)
            SEPARATOR
            MENUITEM "Agentes ventas Artículos" ACTION LISTAGEART(oBarMain,oMenu,1)
            MENUITEM "Agentes ventas Clientes" ACTION LISTAGECLI(oBarMain,oMenu)
            SEPARATOR
            MENUITEM "Kilos por Repartos" ACTION LISTAGEART(oBarMain,oMenu,2 )
            MENUITEM "Ventas por Grupos Clientes" ACTION LISVENGRUPO(oBarMain,oMenu )
       ENDMENU
       DEFINE BUTTON aoBtn[5] OF oBarMain ACTION aoBtn[5]:ShowPopup();
       RESOURCE "ESTADISTICAS" PROMPT "LISTADOS" GROUP ;
       MENU oPopMenu[5] TOOLTIP "Estadisticas de Ventas"
    
       MENU oPopMenu[6] POPUP 2007
            MENUITEM "Enlace a Contabilidad" ACTION ENLACONTACOBR(oBarMain,oMenu,1)
            SEPARATOR
            MENUITEM "Enlace a Cobros" ACTION ENLACONTACOBR(oBarMain,oMenu,2)
       ENDMENU
       DEFINE BUTTON aoBtn[6] OF oBarMain ACTION aoBtn[6]:ShowPopup();
       RESOURCE "ENLACES" PROMPT "ENLACES " GROUP ;
       MENU oPopMenu[6] TOOLTIP "Enlaces de Facturas Cobros/Contabilidad"
    
         MENU oPopMenu[7] POPUP 2007
            MENUITEM "Listado de Albaranes del Reparto" ACTION LISALBREP(oBarMain,oMenu)
            SEPARATOR
            MENUITEM "Marcar/Desmarcar Albaranes" ACTION MARCALBARAN(oBarMain,oMenu)
            SEPARATOR
            MENUITEM "Cobros del Reparto" ACTION COBROSPED(oBarMain,oMenu)
            MENUITEM "Listado de Cobros" ACTION LISCOBPED(oBarMain,oMenu)
            MENUITEM "Consulta de Cobros" ACTION CONSCOBPED(oBarMain,oMenu)
            SEPARATOR
            MENUITEM "Caja Repartos" ACTION COBROSREP(oBarMain,oMenu)
            MENUITEM "Listado de Caja" ACTION LISTCAJAR(oBarMain,oMenu)
       ENDMENU
       DEFINE BUTTON aoBtn[7] OF oBarMain ACTION aoBtn[7]:ShowPopup();
       RESOURCE "REPARTOS" PROMPT "REPARTO" GROUP ;
       MENU oPopMenu[7] TOOLTIP "Gestión del Reparto"
  
      MENU oPopMenu[8] POPUP 2007
            MENUITEM "Diario de Facturas" ACTION DIARIOFACTURAS(oBarMain,oMenu )
            SEPARATOR
            MENUITEM "347 de Ventas" ACTION MODELO347(oBarMain,oMenu)
       ENDMENU      
       DEFINE BUTTON aoBtn[8] OF oBarMain ACTION aoBtn[8]:ShowPopup();
       RESOURCE "IVA" PROMPT "I.V.A." GROUP ; 
       MENU oPopMenu[8] TOOLTIP "UTILES DE IVA"

       MENU oPopMenu[9] POPUP 2007
            MENUITEM "Generar Indices" ACTION INDICES(oBarMain,oMenu)
            SEPARATOR
            MENUITEM "Elegir Impresora" ACTION PrinterSetup(oBarMain,oMenu)
            SEPARATOR
            MENUITEM "Listados de Lotes" ACTION LOTESANIDAD(oBarMain,oMenu)
            MENUITEM "Kilos de un Lote" ACTION KILOSLOTES(oBarMain,oMenu)
            SEPARATOR
            MENUITEM "Borrar Clientes sin Compras" ACTION DELCLIESINCOM(oBarMain,oMenu)
       ENDMENU      
       DEFINE BUTTON aoBtn[9] OF oBarMain ACTION aoBtn[9]:ShowPopup();
       RESOURCE "UTILES" PROMPT "UTILES" GROUP ; 
       MENU oPopMenu[9] TOOLTIP "UTILIDADES"
        
       DEFINE BUTTON aoBtn[10] OF oBarMain ACTION dbCloseAll(), oWMain:End();
       RESOURCE "Salir" PROMPT "Salir" GROUP TOOLTIP "Salir de la Aplicacion"
        
        

      ACTIVATE WINDOW oWMain MAXIMIZED ;
               ON INIT EscogeArea() ;
                 VALID MsgYesNo( "Finalizar sesion?","Elija" )

    dbCloseAll()
    SET 3DLOOK OFF
    RELEASE FONT oFont
    RELEASE BITMAP oBmp
    RELEASE ICON oIco
    FreeLibrary(hDlib)


return( nil )

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

function MainMenu()

  


   MENU oMenu 2007
   
    MENUITEM "Ejercicios"
   MENU
     MENUITEM "Areas de trabajo" ACTION EscogeArea() ;
       MESSAGE "Eleccion del Area de trabajo"
     MENUITEM "Empresas" ACTION MsgInfo("empresas") ;
     MESSAGE "Creación de ejercicios" 
   ENDMENU         


     MENUITEM "Ficheros"
     MENU
        MENUITEM "Clientes"  ACTION CLIENTES(oBarMain, oMenu) ;
      MESSAGE "Fichas de Clientes"
        MENUITEM "Artículos" ACTION ARTICULOS(oBarMain, oMenu) ;
      MESSAGE "Fichas de Artículos"
          MENUITEM "Proveedores" ACTION PROVEEDORES(oBarMain, oMenu) ;
      MESSAGE "Fichas de Proveedores"
      MENUITEM "Comerciales" ACTION COMERCIALES(oBarMain, oMenu) ;
      MESSAGE "Fichas de Comerciales"
      MENUITEM "Cobradores" ACTION COBRADORES(oBarMain, oMenu) ;
      MESSAGE "Fichas de Cobradores"
      MENUITEM "Repartidores" ACTION REPARTIDORES(oBarMain, oMenu) ;
      MESSAGE "Fichas de Repartidores"
      MENUITEM "Desctos. Especiales" ACTION DESCTOESPE(oBarMain, oMenu) ;
      MESSAGE "Descuentos especiales a Clientes"
      MENUITEM "Tipos de Iva" ACTION TIPOSIVA(oBarMain, oMenu) ;
      MESSAGE "Fichas de Tipos de IVA"
      MENUITEM "Mensajes Albarán" ACTION MENSAJES(oBarMain, oMenu) ;
      MESSAGE "Mensajes en Albaranes"
     ENDMENU


      MENUITEM "Albaranes"
     MENU
        MENUITEM "Entrada de Albaranes" ACTION ALBARANES(oBarMain,oMenu);
        MESSAGE "Hacer albaranes"
      MENUITEM "Modificación de Albaranes" ACTION MODIFIALBAR(oBarMain,oMenu);
      MESSAGE "Modificar albaranes"
      MENUITEM "Consulta de Albaranes" ACTION CONSALBA(oBarMain,oMenu);
      MESSAGE "Consultar albaranes"
      SEPARATOR
      MENUITEM "Repetir Albaranes" ACTION REPITEALB(oBarMain,oMenu );
      MESSAGE "Repetir impresión de albaranes"
      SEPARATOR
      MENUITEM "Listado de Albaranes" ACTION LISTALBAR(oBarMain,oMenu );
      MESSAGE "Listados de albaranes"
     ENDMENU


      MENUITEM "Facturas"
   MENU  
      MENUITEM "Facturas de Albaranes" ACTION FACTURALBAR(oBarMain,oMenu);
      MESSAGE "Facturar albaranes"
      MENUITEM "Modificación de Facturas" ACTION MODIFIFACTU(oBarMain,oMenu);
      MESSAGE "Modificar Facturas"
      MENUITEM "Consulta de Facturas" ACTION CONSFACTU(oBarMain,oMenu);
      MESSAGE "Consultar Facturas"
      SEPARATOR
      MENUITEM "Factura Directa" ACTION FACTURAS(oBarMain,oMenu);
      MESSAGE "Hacer una Factura"
      SEPARATOR
      MENUITEM "Facturar un Albarán" ACTION FACTURAUNALBAR(oBarMain,oMenu);
      MESSAGE "Facturar un albarán"
      SEPARATOR
      MENUITEM "Repetir Facturas" ACTION REPITEFAC(oBarMain,oMenu );
      MESSAGE "Repetir Facturas"
      SEPARATOR
      MENUITEM "Listado de Facturas" ACTION LISFACTURAS(oBarMain,oMenu );
      MESSAGE "Listados de Facturas"
   ENDMENU   


      MENUITEM "Estadisticas"
   MENU  
      MENUITEM "Clientes sin Compras" ACTION LISINCOMPRA(oBarMain,oMenu);
      MESSAGE "Listado de Clientes sin Compras"
      MENUITEM "Consumos de Clientes" ACTION CONSUMOCLIE(oBarMain,oMenu);
      MESSAGE "Listado de Consumos de Clientes"
      MENUITEM "Kilos Mes de Clientes" ACTION HISTOCLIE(oBarMain,oMenu);
      MESSAGE "Listado de Kilos de Clientes por mes"
      SEPARATOR
      MENUITEM "Ventas de Artículos y Agentes" ACTION VENTAGEART(oBarMain,oMenu);
      MESSAGE "Listado de Ventas de Artículos y por Agentes"
      MENUITEM "Kilos Mes de Artículos" ACTION HISTOART(oBarMain,oMenu);
      MESSAGE "Listado de Kilos de Artículos por mes"
      SEPARATOR
      MENUITEM "Agentes ventas Artículos" ACTION LISTAGEART(oBarMain,oMenu,1);
      MESSAGE "Ventas de Artículos por Agentes"
      MENUITEM "Agentes ventas Clientes" ACTION LISTAGECLI(oBarMain,oMenu);
      MESSAGE "Ventas a Clientes por Agentes"
      SEPARATOR
      MENUITEM "Kilos por Repartos" ACTION LISTAGEART(oBarMain,oMenu,2 );
      MESSAGE "Ventas en Kilos por reparto entre fechas"
      MENUITEM "Ventas por Grupos Clientes" ACTION LISVENGRUPO(oBarMain,oMenu );
      MESSAGE "Ventas a Grupos de Clientes"
     ENDMENU


      MENUITEM "Enlaces"
     MENU
        MENUITEM "Enlace a Contabilidad" ACTION ENLACONTACOBR(oBarMain, oMenu,1) ;
          MESSAGE "Enlace de facturas a IVA y Contabilidad"
        MENUITEM "Enlace a Cobros" ACTION ENLACONTACOBR(oBarMain, oMenu,2 ) ;
          MESSAGE "Enlace de facturas a Cobros"
     ENDMENU


      MENUITEM "Repartos"
     MENU
        MENUITEM "Listado de Albaranes del Reparto" ACTION LISALBREP(oBarMain, oMenu ) ;
          MESSAGE "Listado de Artículos de un reparto"
          SEPARATOR
          MENUITEM "Marcar/Desmarcar Albaranes" ACTION MARCALBARAN(oBarMain, oMenu ) ;
          MESSAGE "Marca o desmarca albaranes para no facturar"
          SEPARATOR
          MENUITEM "Cobros del Reparto" ACTION COBROSPED(oBarMain, oMenu ) ;
          MESSAGE "Cobros de albaranes de un reparto"
          MENUITEM "Listado de Cobros" ACTION LISCOBPED(oBarMain, oMenu ) ;
          MESSAGE "Listado de los Cobros de un reparto"
          MENUITEM "Caja Repartos" ACTION COBROSREP(oBarMain,oMenu);
          MESSAGE "Entrada de Cobros de los repartos"
     ENDMENU


      MENUITEM "I.V.A."
     MENU
      MENUITEM "Diario de Facturas" ACTION DIARIOFACTURAS(oBarMain,oMenu );
      MESSAGE "Diario de Facturas Emitidas"
          SEPARATOR 
      MENUITEM "347 de Ventas" ACTION MODELO347(oBarMain,oMenu);
        MESSAGE "Modelo 347 de ventas"
     ENDMENU


      MENUITEM "Utiles"
     MENU
        MENUITEM "Indices" ACTION Indices(oBarMain,oMenu);
        MESSAGE "Generacion de Indices"
          SEPARATOR 
      MENUITEM "&Impresora" ACTION PrinterSetUp();
        MESSAGE "Configuracion impresora"
        SEPARATOR
        MENUITEM "&Buscar Lotes" ACTION LOTESANIDAD(oBarMain,oMenu);
        MESSAGE "Búsqueda y Listado de Lotes"
        SEPARATOR
      MENUITEM "Borrar Clientes sin Compras" ACTION DELCLIESINCOM(oBarMain,oMenu);
      MESSAGE "Borrar clientes que no han comprado"
        SEPARATOR
        MENUITEM "&Acerca de..." ACTION MsgAbout("GFACTU 2.0",,,,"(c)Pedro Núñez","LOGO" ) ;
          MESSAGE OemToAnsi( "GESTION COMERCIAL" )
     ENDMENU

      MENUITEM "Terminar" ACTION oWMain:End(),dbCloseAll() ;
          MESSAGE OemToAnsi( "Volver a Windows" )
          
   ENDMENU

return( oMenu )
*-------------------------------------------------------------------------------
#pragma BEGINDUMP

#include <hbapi.h>
#include <windows.h>

HB_FUNC( OLEUNINITIALIZE )
{
   OleUninitialize();
}

#pragma ENDDUMP

*******************************************************************************


DLL32 FUNCTION BWCCRegister( hInst AS LONG ) AS WORD PASCAL LIB "BWCC32.DLL"
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO

Continue the discussion