Página 1 de 1

Como usar menus no xHarbour?

Enviado: 01 Nov 2007 00:32
por clodoaldomonteiro
Olá!

Tô migrando do clipper pro harbour e tô bolando em construir um menu no harbour.

Alguém tem alguma dica ou exemplo?

Enviado: 01 Nov 2007 01:46
por Stanis Luksys

Código: Selecionar todos

#include "button.ch"   
#include "inkey.ch"

function Main()

   local oMenu

   // Ativa as ações do mouse
   SET( _SET_EVENTMASK, INKEY_ALL )

   // Ativa cores intensas no fundo
   SetBlink(.f.)

   // Torna o cursor do mouse visivel
   mSetCursor(.T.)

   // Limpa a tela
   setColor( "w+/b" )
   scroll()    

   // Aqui neste momento é criado o objeto menu
   oMenu := Monta_Menu()

   // Espera por um evento do menu e nao sai enquanto o usuario
   // nao escolher o item 'sair' do menu
   do while MenuModal( oMenu, 01, 24, 01, 79, "w+/b" ) != 999 ;  enddo
   
   return( NIL )




// A função a seguir é responsávl pela criação do menu retorna para o 
// objeto oMenu o estado atual do menu, quando é escolhida uma opção

function Monta_Menu()
   
   local oTopBar, oPopUp, oPopUp1, oItem, oItem1, oItem2
   
   local cCorBar  := "b*/w,w+/bg,b*/w,w+/bg,b*/w,b*/w"
   local cCorItem := "w+/bg,b*/w,w+/bg,b*/w,w/bg,w+/bg"
   
   

   // TopBar() cria o menu na posição indicada 
   oTopBar := TopBar( 0, 0, 79)
   oTopBar:ColorSpec := cCorBar

   // Cria um novo 'popup menu' chamado Arquivo e adiciona ele no objeto oTopBar 
   oPopUp := PopUp()
   oPopUp :ColorSpec:= cCorItem
   oTopBar:AddItem( MenuItem ( "&Arquivo", oPopUp, , "Opcoes de cadastro e alteracoes de registros..." ) )


   // Aqui começa a adição de itens do menu 'Arquivo' 
   
   oItem := MenuItem( "Cadastro de &Clientes" ,{|| Alert("Clientes()") }, K_CTRL_C, "Mensagem do primeiro item...", 101)
   oPopUp:AddItem( oItem )

   oItem :=MenuItem( "Cadastro de &Produtos" ,{|| Alert("Produtos()") }, K_CTRL_P, "Mensagem do segundo item...")
   oPopUp:AddItem( oItem )

   oItem :=MenuItem( "Cadastro de &Forncedores" ,{|| Alert("Fornecedores()") }, K_CTRL_F, "Mensagem do terceiro item...")
   oPopUp:AddItem( oItem )

   oPopUp:AddItem( MenuItem( MENU_SEPARATOR ) )

   oItem :=MenuItem( "&Grupos de Produtos" ,{|| Alert("Grupos()") }, K_CTRL_G, "Mensagem do quarto item...")
   oPopUp:AddItem( oItem )

   oItem :=MenuItem( "Contas &Bancarias", {|| Alert("Bancos()") }, K_CTRL_B, "Mensagem do quinto item...")
   oPopUp:AddItem( oItem )

   oPopUp:AddItem( MenuItem( MENU_SEPARATOR ) )

   oItem :=MenuItem( "Sai&r", {||.t.} , K_ALT_F4,"Abandona o aplicativo.", 999)
   oPopUp:AddItem( oItem)


   // Cria um novo 'popup menu' chamado Opcoes e adiciona ele no objeto oTopBar 

   oPopUp := PopUp()
   oPopUp :ColorSpec:= cCorItem
   oTopBar:AddItem( MenuItem ( "&Opcoes", oPopUp, , "Opcoes gerais do programa..." ) )

   // Aqui começa a adição de itens do menu 'Opcoes'

	// Cria novo menu popup debtro do outro, fazendo um sub-menu
	oPopUp1 := PopUp()
	oPopUp1 :ColorSpec:= cCorItem
	oItem := MenuItem( "Opcoes do &Mouse",oPopUp1 )
	oPopup:AddItem( oItem )

	// Aqui os Itens do sub-menu "Opcoes do Mouse"   
   // Interessante notar que se o mouse ja esta habilitado, podemos
   // desabilitar o item que faria isso, e vice-versa
   oItem1 := MenuItem( "&Habilitar cursor do mouse" ,{|| mSetCursor(.t.), oItem1:Enabled := .f.,  oItem2:Enabled := .t.}, , "Habilita o cursor do mouse" )
   oItem1:Enabled := .f.
   oPopUp1:AddItem( oItem1 )

   oItem2 := MenuItem( "&Desabilitar cursor do mouse" ,{|| mSetCursor(.f.), oItem2:Enabled := .f., oItem1:Enabled := .t. }, , "Desabilita o cursor do mouse" )
   oPopUp1:AddItem( oItem2 )
 

   // Retorna o estado de objeto TopBar para a função Main()
   return ( oTopBar )

Enviado: 01 Nov 2007 10:00
por janio
Vc pode usar tbem as funções de menu da VISUAL LIB.

http://www.sqllib.com.br/download.php?id=TOOLS

Jânio

Re: Como usar menus no xHarbour?

Enviado: 01 Nov 2007 10:18
por sygecom
clodoaldomonteiro escreveu:Olá!

Tô migrando do clipper pro harbour e tô bolando em construir um menu no harbour.

Alguém tem alguma dica ou exemplo?
Vai usar alguma LIB GRAFICA ? se for usar em modo console pode usar como usava no clipper !