Clipper On Line • Ver Tópico - Menu TopBarMenu() de Harbour Sombra Ventana

Menu TopBarMenu() de Harbour Sombra Ventana

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

Moderador: Moderadores

 

Menu TopBarMenu() de Harbour Sombra Ventana

Mensagempor Ruben Dario » 14 Nov 2018 18:44

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/uCSF8UWsfi/menusombra.html

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 )
Ruben Dario
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 115
Data de registro: 14 Jun 2015 23:19
Cidade/Estado: Colombia
Curtiu: 3 vezes
Mens.Curtidas: 0 vez

Menu TopBarMenu() de Harbour Sombra Ventana

Mensagempor asimoes » 15 Nov 2018 20:09

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.

    IF ::lShadowed
         hb_Shadow( nTop, nLeft, ::nBottom, ::nRight )
      ENDIF


A função hb_Shadow é C
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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Menu TopBarMenu() de Harbour Sombra Ventana

Mensagempor asimoes » 15 Nov 2018 20:21

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) Visualizado 1685 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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Menu TopBarMenu() de Harbour Sombra Ventana

Mensagempor asimoes » 15 Nov 2018 20:59

Para testar as cores da função Hb_Shadow
  @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)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Menu TopBarMenu() de Harbour Sombra Ventana

Mensagempor Ruben Dario » 16 Nov 2018 21:51

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
Ruben Dario
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 115
Data de registro: 14 Jun 2015 23:19
Cidade/Estado: Colombia
Curtiu: 3 vezes
Mens.Curtidas: 0 vez

Menu TopBarMenu() de Harbour Sombra Ventana

Mensagempor LIST SYSTEMS » 06 Dez 2018 10:29

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!
Avatar de usuário

LIST SYSTEMS
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 6
Data de registro: 06 Dez 2018 08:06
Cidade/Estado: São Paulo
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Menu TopBarMenu() de Harbour Sombra Ventana

Mensagempor Ruben Dario » 03 Out 2023 11:39

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 ) );
}
Ruben Dario
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 115
Data de registro: 14 Jun 2015 23:19
Cidade/Estado: Colombia
Curtiu: 3 vezes
Mens.Curtidas: 0 vez

Menu TopBarMenu() de Harbour Sombra Ventana

Mensagempor alxsts » 03 Out 2023 17:26

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:
#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)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 6 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro