Page 1 of 2

Menu.... ha habilitado....

Posted: Mon Jan 16, 2006 6:49 pm
by Marco A. Delgado
Hola...

tengo un menu.... que hago en una barra de tsbutton...pero en un submenu no lo pinta como desabilitado (obviamente no ejecuta la accion) pero se ve algo....raro....

alguien...sabe..porke...

Saludos

Marco A. Delgado.

[img][img]http://img17.imageshack.us/img17/8913/menus7ob.jpg[/img][/img]

Posted: Mon Jan 16, 2006 6:56 pm
by Antonio Linares
Marco,

No es el menu estandard de FWH, si ?

Posted: Mon Jan 16, 2006 9:30 pm
by Marco A. Delgado
no entiendo tu respuesta Antonio.

me dices que el menu que utilizo pertenece a la clase tsbutton

Saludos

Marco A. Delgado.

Posted: Mon Jan 16, 2006 11:14 pm
by Marco A. Delgado
gracias.....por tu respuesta Antonio


cheque los ejemplos de fwh y todos funcionan correctamente, seguire probando...


Saludos

Marco A. Delgado.

Posted: Tue Jan 17, 2006 4:16 am
by Antonio Linares
Marco,

Me refiero a si estás usando los menús de FWH ó estás usando otros de terceros.

Posted: Tue Jan 17, 2006 2:29 pm
by Marco A. Delgado
Antonio,

Estoy utilizando los de FWH


Saludos

Marco A. Delgado.

Posted: Tue Jan 17, 2006 2:40 pm
by leandro
Perdon la intromicion, pero sera que me pueden indicar cual es el nombre del ejemplo para revisarlo.

Posted: Tue Jan 17, 2006 7:15 pm
by Antonio Linares
Marco,

Podrias por favor proporcionar un ejemplo pequeño y autocontenido, que use clases estandard de FWH y que reproduzca el problema ? gracias.

Posted: Wed Jan 18, 2006 3:47 am
by Marco A. Delgado
este es lo que he probado..

Code: Select all

#Define COLOR_BTNFACE 15
#Define CLR_NBLUE  nRGB( 128, 128, 192)

#Include "FiveWin.ch"

Static oWndPrinc, oOut, oBtn[2]
Static cEmpresa, oFont
***************************
Function Main()
  Local oIcon, oCur, oBar, cUsuario
  Local oSpl, oUsuario, oBrush, oSay, oEmpresa
  DEFAULT cEmpresa := "Transporte Urbano de Poza Rica, S.A. de C.V."
  DEFAULT cUsuario := ""

  REQUEST DBFCDX
  RDDSETDEFAULT("DBFCDX")
  SET CENTURY ON
  SET DATE BRITISH
  SET DELETE ON
  SET EPOCH TO 1989
  SetHandleCount( 80 )
  Set3dLook(.T.)

  DEFINE ICON oIcon RESOURCE "A"
  DEFINE CURSOR oCur RESOURCE "Hand"
  DEFINE BRUSH oBrush RESOURCE "Brush2"
  DEFINE FONT oFont  NAME "Arial" SIZE 0, -11

  DEFINE WINDOW oWndPrinc ;
         TITLE "Sistema Administrativo para Transporte de Pasajeros para Windows" ;
         COLOR CLR_BLACK, GetSysColor(15)-RGB(30,30,30) ;
         MENU CreaMenu() ;
         ICON oIcon

         oWndPrinc:SetFont( oFont )

         DEFINE BUTTONBAR oBar 3DLOOK OF oWndPrinc SIZE 35, 35
                oBar:bLClicked := {|| 0 }
                oBar:bRClicked := {|| 0 }

                DEFINE BUTTON oBtn[1] OF oBar    ;
                       RESOURCE "EXIT","EXIT"   ;
                       ACTION oWndPrinc:End()       ;
                       MESSAGE " Salir del Sistema" ;
                       TOOLTIP "Salir del Sistema"  ;
							  NOBORDER

                DEFINE BUTTON oBtn[2] OF oBar ;
							  RESOURCE "PRINTER"     ;
                       ACTION MenuPop( oBtn[2] )  ;
                       FONT oWndPrinc:oFont          ;
                       MESSAGE " Reportes del Sistema" ;
                       NOBORDER            ;
                       GROUP

         SET MESSAGE OF oWndPrinc TO " Prueba " CENTER NOINSET

                    oWndPrinc:oMsgBar:DateOn()

  ACTIVATE WINDOW oWndPrinc          ;
           VALID (oFont:End(), .T. ) ;
           MAXIMIZED


Return Nil
*******************
Function CreaMenu()
  Local oMenu
  Local lEnable := .F.

        MENU oMenu
				MenuItem "Primero"
				  Menu
					 MenuItem "Acerca1"
				      Menu
					     MenuItem "Punto1"
					     MenuItem "Punto2"
				          Menu
					         MenuItem "Parte1"
					         MenuItem "Parte2"
					         MenuItem "Parte3" When lEnable
				          EndMenu
					     MenuItem "Punto3" When lEnable
				      EndMenu
					 MenuItem "Acerca2"
					 MenuItem "Acerca3" When lEnable
				  EndMenu
				MenuItem "Segundo"
        EndMenu

Return(oMenu)
*******************************************
Static Function MenuPop( oBtn )
  Local oMenu, aRect
  Local tUsuario
  Local lEnable := .F.

    MENU oMenu POPUP
       MenuItem "Informe de &Recaudaciones Diarias"
       SEPARATOR
       MenuItem "Deducciones a &Operadores" ;
              RESOURCE "Oper16"
              Menu
                 MenuItem "&Detallado (Ordenado por Operador)" When lEnable
					  MenuItem "&Acumulado (Ordenado por Operador)" When lEnable
                 MenuItem "&Individual"
              EndMenu
       MenuItem "Informe de &Pensiones a Operadores"

       SEPARATOR
       MenuItem "&Ingresos"
           Menu
              MenuItem "Mensual por &Unidad" When lEnable
                  Menu
                     MenuItem "&Detallado (Ordenado por Unidad)"
                     MenuItem "&Acumulado (Ordenado por Ingresos)"
							MenuItem "por &Unidad (en Detalle)"
                  EndMenu
				  MenuItem "Mensual por &Operador"  ;
						     RESOURCE "Oper16" When lEnable
                  Menu
                     MenuItem "&Detallado (Ordenado por Operador)"
							MenuItem "&Acumulado (Ordenado por Ingresos)"
                     MenuItem "&Individual (en Detalle)"
                  EndMenu
              MenuItem "Mensual Por &Empresas" When lEnable
				  MenuItem "Mensual Por &Bases"
				  SEPARATOR
				  MenuItem "Anual por &Unidad"
				  MenuItem "Anual por &Operador" ;
						     RESOURCE "Oper16"
                  Menu
                     MenuItem "&Global"
                     MenuItem "&Individual"
                  EndMenu
				  MenuItem "Anual por &Empresas" When lEnable
				  MenuItem "Anual por &Bases"
           EndMenu
       SEPARATOR
       MenuItem "&Generacion de Disco de Entregas" When lEnable
    ENDMENU

	 ACTIVATE POPUP oMenu AT 10 , 0 OF oBtn

Return(Nil)
y sigo con el mismo problema, en los menus normales de una ventana no hay problema, pero dependiendo de una barra de herramientas el resultado es esto.

Prueba en ventana principal:
[img][img]http://img371.imageshack.us/img371/2724/menua7mb.jpg[/img][/img]

Prueba en una barra de la ventana principal

[img][img]http://img371.imageshack.us/img371/7351/menub4ab.jpg[/img][/img]

[img][img]http://img371.imageshack.us/img371/1791/menuc9nu.jpg[/img][/img]

Antonio espero y esto te guie, gracias...

Saludos

Marco A. Delgado.

Posted: Wed Jan 18, 2006 8:32 am
by Antonio Linares
Marco,

Por favor prueba este cambio y dime si ya se ve bien (aunque estará en una posición distinta en la pantalla):

ACTIVATE POPUP oMenu AT 10 , 0 OF oBtn:oWnd:oWnd

Posted: Wed Jan 18, 2006 2:47 pm
by Marco A. Delgado
Funciono..

Muchas Gracias.... pero a que se debe (claro si se puede saber)

[img][img]http://img371.imageshack.us/img371/4941/menud6yv.jpg[/img][/img]

[img][img]http://img371.imageshack.us/img371/3176/menue7kz.jpg[/img][/img]

Pero sigue sin funcionar con tsbutton :(

Saludos
Marco A. Delgado.

Posted: Wed Jan 18, 2006 4:25 pm
by Marco A. Delgado
ok....funciono Antonio pero....

el menu se mueve demasiado, no queda debajo del botton que es donde lo requiero, tambien hice pruebas con tsbutton y el resultado es el mismo se mueve incluso si pongo otro :oWnd se pasa hasta la ventana principal.

Alguna sugerencia

Saludos

Marco A. Delgado.

Posted: Wed Jan 18, 2006 8:10 pm
by Antonio Linares
Marco,

El problema se debe a que ese control no está procesando correctamente el mensaje WM_INITMENUPOPUP.

Puedes solucionarlo añadiendo estas líneas al Método HandleEvent() de ese control:

Code: Select all

      case nMsg == WM_INITMENUPOPUP
           return ::InitMenuPopup( nWParam, nLoWord( nLParam ), nHiWord( nLParam ) != 0 )

Posted: Wed Jan 18, 2006 9:43 pm
by Marco A. Delgado
ok...gracias...lo checo

solo una pregunta Antonio, como le hago para que el menu (en el ejemplo expuesto) me aparezca debajo del botton (como debe de ser).

Saludos

Marco A. Delgado.

Posted: Thu Jan 19, 2006 2:31 am
by Antonio Linares
Marco,

Las coordenadas que tú usabas son relativas al botón. Ahora habría que convertirlas en relativas a la ventana. Se haría así:

local aPos := { 0, 10 }

aPos = ClientToScreen( oBtn:hWnd, aPos )
aPos = ScreenToClient( oWnd:hWnd, aPos )

y los valores que ahora tiene aPos deberían ser los correctos, y relativos a la ventana principal.