Página 1 de 1

Menu TopBarMenu() de Harbour Sombra Ventana

Enviado: 14 Nov 2018 19:44
por Ruben Dario
Saludos al Forum.
Mi pregunta las ventanas me coloca una sombra pero negra, como le cambio el color a la sombra

https://www.4shared.com/photo/uCSF8UWsf ... ombra.html

Código: Selecionar todos

LOCAL MENU_COLOR   :=  "B/W,W+/R,W+/W,G+/R,B+/W+,B/W"

   oTopBar := TopBarMenu():new( 03, 00, MaxCol() )
   oPopUp1 := POPUPMENU():NEW()  
   oPopUp2 := POPUPMENU():NEW()  

   oTopBar:ColorSpec := MENU_COLOR
   oPopUp1:ColorSpec := MENU_COLOR
   oPopUp1:shadowed( TRUE )

   oPopUp2:ColorSpec := MENU_COLOR
   oPopUp2:shadowed( TRUE )

    oPopUp1:AddItem( MenuItem( "&Grupos de Inventario", oPopUp2 , NIL, MESAG_MENU ) )
   oPopUp1:AddItem( MenuItem( "&Articulos",            {|| Accesos("PXP200_1(1,0)","PXP200_1",0)  }, NIL, MESAG_MENU ) )
   oPopUp1:AddItem( MenuItem( MENU_SEPARATOR ) )
   oPopUp1:AddItem( MenuItem( "&Clientes",             {|| Accesos("PXP200_1(1,0)","PXP200_1",0)  }, NIL, MESAG_MENU ) )
   oPopUp1:AddItem( MenuItem( "&Proveedores",          {|| Accesos("PXP200_1(1,0)","PXP200_1",0)  }, NIL, MESAG_MENU ) )
   oPopUp1:AddItem( MenuItem( MENU_SEPARATOR ) )
   oPopUp1:AddItem( MenuItem( "&Vendedores",           {|| ALERT( VERSION() ) }, NIL, OS() ) )
   *--
   oTopBar:AddItem( MenuItem(" &Catalogos ", oPopUp1, NIL, MESAG_MENU ) )
   *--

   oPopUp2:AddItem( MenuItem( "&Grupos de Inventario", {|| Accesos("PXP200_1(1,0)","PXP200_1",0) }, NIL, MESAG_MENU ) )
   oPopUp2:AddItem( MenuItem( "&Articulos",            {|| Accesos("PXP200_1(1,0)","PXP200_1",0)  }, NIL, MESAG_MENU ) )
   oPopUp2:AddItem( MenuItem( MENU_SEPARATOR ) )
   oPopUp2:AddItem( MenuItem( "&Clientes",             {|| Accesos("PXP200_1(1,0)","PXP200_1",0)  }, NIL, MESAG_MENU ) )
   oPopUp2:AddItem( MenuItem( "&Proveedores",          {|| Accesos("PXP200_1(1,0)","PXP200_1",0)  }, NIL, MESAG_MENU ) )
   oPopUp2:AddItem( MenuItem( MENU_SEPARATOR ) )
   oPopUp2:AddItem( MenuItem( "&Vendedores",           {|| ALERT( VERSION() ) }, NIL, OS() ) )

   *--
   oPopUp1 := POPUPMENU():NEW()  
   oPopUp1:ColorSpec := MENU_COLOR
   oPopUp1:shadowed( TRUE )

   *--
   oPopUp1:AddItem( MenuItem( ATO("&Facturación"), {|| .t. }, NIL, MESAG_MENU ) )
   *--
   oTopBar:AddItem( MenuItem(" &Datos Generales ", oPopUp1, NIL, MESAG_MENU ) )
   *--
_
   oPopUp1 := POPUPMENU():NEW()  
   oPopUp1:ColorSpec := MENU_COLOR
   oPopUp1:shadowed( TRUE )
   *--
   oPopUp1:AddItem( MenuItem( "Cuentas X &Cobrar", {|| ALERT( VERSION() ) }, NIL, OS() ) )
   oPopUp1:AddItem( MenuItem( "Cuentas X &Pagar",  {|| ALERT( VERSION() ) }, NIL, OS() ) )
   *--
   oTopBar:AddItem( MenuItem(" &Logistica ", oPopUp1, NIL, MESAG_MENU ) )
   *--
   oPopUp1 := POPUPMENU():NEW()  
   oPopUp1:ColorSpec := MENU_COLOR
   oPopUp1:shadowed( TRUE )
   *--
   oPopUp1:AddItem( MenuItem( "&Clientes",         {|| ALERT( VERSION() ) }, NIL, OS() ) )
   oPopUp1:AddItem( MenuItem( "&Lista de Precios", {|| ALERT( VERSION() ) }, NIL, OS() ) )
   oPopUp1:AddItem( MenuItem( MENU_SEPARATOR ) )
   oPopUp1:AddItem( MenuItem( "&Ventas",           {|| .t. }, NIL, MESAG_MENU ) )
   *--
   oTopBar:AddItem( MenuItem(" &Planeacion ", oPopUp1, NIL, MESAG_MENU ) )
   *--

   oPopUp1 := POPUPMENU():NEW()  
   oPopUp1:ColorSpec := MENU_COLOR
   oPopUp1:shadowed( TRUE )
   *--
   oPopUp1:AddItem( MenuItem( "&Respaldo de Datos",         {|| ALERT( VERSION() ) }, NIL, OS() ) )
   oPopUp1:AddItem( MenuItem( MENU_SEPARATOR ) )
   oPopUp1:AddItem( MenuItem( ATO("Recuperar &Información"),{|| ALERT( VERSION() ) }, NIL, OS() ) )
   *--
   oTopBar:AddItem( MenuItem(" &Reportes ", oPopUp1, NIL, MESAG_MENU ) )
   *--
   *--

   oPopUp1 := POPUPMENU():NEW() 
   oPopUp1:ColorSpec := MENU_COLOR
   oPopUp1:shadowed( TRUE )

   oPopUp1:AddItem( MenuItem( "&Respaldo de Datos",         {|| ALERT( VERSION() ) }, NIL, OS() ) )
   oPopUp1:AddItem( MenuItem( MENU_SEPARATOR ) )
   oPopUp1:AddItem( MenuItem( ATO("Recuperar &Información"),{|| ALERT( VERSION() ) }, NIL, OS() ) )
   *--
   oTopBar:AddItem( MenuItem(" &Consultas ", oPopUp1, NIL, MESAG_MENU ) )
   *--
   oPopUp1 := POPUPMENU():NEW()  
   oPopUp1:ColorSpec := MENU_COLOR
   oPopUp1:shadowed( TRUE )

   oPopUp1:AddItem( MenuItem( "&Respaldo de Datos",         {|| ALERT( VERSION() ) }, NIL, OS() ) )
   oPopUp1:AddItem( MenuItem( MENU_SEPARATOR ) )
   oPopUp1:AddItem( MenuItem( ATO("Recuperar &Información"),{|| ALERT( VERSION() ) }, NIL, OS() ) )
   *--
   oTopBar:AddItem( MenuItem(" &Procesos ", oPopUp1, NIL, MESAG_MENU ) )

   *--

   oPopUp1 := POPUPMENU():NEW() 
   oPopUp1:ColorSpec := MENU_COLOR
   oPopUp1:shadowed( FALSE )
   oPopUp1:AddItem( MenuItem( " Sal&ir ", {|| ::End },,VERSION(),999 ) )
   *--
   oTopBar:AddItem( MenuItem( " &Salida ", oPopUp1, NIL, MESAG_MENU ) )

RETURN( oTopbar )

Menu TopBarMenu() de Harbour Sombra Ventana

Enviado: 15 Nov 2018 21:09
por asimoes
A função que faz a sombra é hb_Shadow() ela está definida na classe PopupMenu, você pode criar uma função de sobra diferente, para usar tem que
usar oPopUp2:shadowed( FALSE ) ou não definir porque o padrão é sem sombra.

Código: Selecionar todos

    IF ::lShadowed
         hb_Shadow( nTop, nLeft, ::nBottom, ::nRight )
      ENDIF
A função hb_Shadow é C

Código: Selecionar todos

HB_FUNC( HB_SHADOW )
{
   if( hb_pcount() >= 4 )
      hb_gtDrawShadow( hb_parni( 1 ),
                       hb_parni( 2 ),
                       hb_parni( 3 ),
                       hb_parni( 4 ),
                       hb_parnidef( 5, 7 ) );
}

Menu TopBarMenu() de Harbour Sombra Ventana

Enviado: 15 Nov 2018 21:21
por asimoes
Um pequeno teste:

@05,02 TO 10,20

HB_SHADOW(05,02,10,20, 100)
2018-11-15 21_20_42-Window.png
2018-11-15 21_20_42-Window.png (7.94 KiB) Exibido 2729 vezes

Menu TopBarMenu() de Harbour Sombra Ventana

Enviado: 15 Nov 2018 21:59
por asimoes
Para testar as cores da função Hb_Shadow

Código: Selecionar todos

  @05,02 TO 10,20
   
   FOR I:=0 TO 255
      IF MOD(I,16) = 0
         HB_SHADOW(05,02,10,20, i)
         @ 06,03 say i
         Inkey(0)
      ENDIF
   NEXT

Menu TopBarMenu() de Harbour Sombra Ventana

Enviado: 16 Nov 2018 22:51
por Ruben Dario
Hola Gracias por tu aporte.

Ya coloque en mi prg el codigo de C hb_Shadow

en que parte coloco este codigo, o hay que modificar classe PopupMenu , esta clase es de Harbour me imagino
IF ::lShadowed
hb_Shadow( nTop, nLeft, ::nBottom, ::nRight )
ENDIF

Menu TopBarMenu() de Harbour Sombra Ventana

Enviado: 06 Dez 2018 11:29
por LIST SYSTEMS
Bom Dia, Pessoal!

Estou tentando colocar sombra no menu também. Mas... onde devem ser feitas essas alterações? Em qual arquivo do Harbour 3.2 posso encontrar essa tal classe?

Agradecido!

Menu TopBarMenu() de Harbour Sombra Ventana

Enviado: 03 Out 2023 11:39
por Ruben Dario
Saludos al Forum

Cuando compilo con BCC76
esta function me da error
HB_FUNC( HB_SHADOW )
{
if( hb_pcount() >= 4 )
hb_gtDrawShadow( hb_parni( 1 ),
hb_parni( 2 ),
hb_parni( 3 ),
hb_parni( 4 ),
hb_parnidef( 5, 7 ) );
}

Menu TopBarMenu() de Harbour Sombra Ventana

Enviado: 03 Out 2023 17:26
por alxsts
Olá!
Ruben Dario escreveu:esta function me da error
Qual erro?

Para compilar código escrito em linguagem C junto ao código xBase, o código C deve estar colocado entre as diretivas necessárias, como mostrado abaixo:

Código: Selecionar todos

#pragma BEGINDUMP

	HB_FUNC( HB_SHADOW )
	{
	   if( hb_pcount() >= 4 )
	      hb_gtDrawShadow( hb_parni( 1 ),
	                       hb_parni( 2 ),
	                       hb_parni( 3 ),
	                       hb_parni( 4 ),
	                       hb_parnidef( 5, 7 ) );
	}
#pragma ENDDUMP
Está fazendo isto?

No caso da função hb_Shadow(), não é necessário criar outra pois a mesma já se encontra no núcleo do Harbour. Talvez o erro que você está recebendo seja justamente o fato de estar duplicando a função...
C:\hb32\Test>hbmk2 -find hb_shadow
Núcleo Harbour (instalado):
hb_Shadow()

C:\hb32\Test>
Quando este tópico foi iniciado, talvez hb_Shadow() ainda não estivesse no núcleo do Harbour...