Menu TopBarMenu() de Harbour Sombra Ventana

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Ruben Dario
Usuário Nível 3
Usuário Nível 3
Mensagens: 127
Registrado em: 14 Jun 2015 23:19
Localização: Colombia

Menu TopBarMenu() de Harbour Sombra Ventana

Mensagem 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 )
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Menu TopBarMenu() de Harbour Sombra Ventana

Mensagem 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 ) );
}
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Menu TopBarMenu() de Harbour Sombra Ventana

Mensagem 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 2728 vezes
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Menu TopBarMenu() de Harbour Sombra Ventana

Mensagem 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
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Ruben Dario
Usuário Nível 3
Usuário Nível 3
Mensagens: 127
Registrado em: 14 Jun 2015 23:19
Localização: Colombia

Menu TopBarMenu() de Harbour Sombra Ventana

Mensagem 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
Avatar do usuário
LIST SYSTEMS
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 06 Dez 2018 09:06
Localização: São Paulo

Menu TopBarMenu() de Harbour Sombra Ventana

Mensagem 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!
Ruben Dario
Usuário Nível 3
Usuário Nível 3
Mensagens: 127
Registrado em: 14 Jun 2015 23:19
Localização: Colombia

Menu TopBarMenu() de Harbour Sombra Ventana

Mensagem 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 ) );
}
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Menu TopBarMenu() de Harbour Sombra Ventana

Mensagem 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...
[]´s
Alexandre Santos (AlxSts)
Responder