Ajuda com Menus...

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

carlos_dornelas
Usuário Nível 3
Usuário Nível 3
Mensagens: 400
Registrado em: 25 Ago 2004 21:54

Ajuda com Menus...

Mensagem por carlos_dornelas »

Pessoal, bom dia!

Preciso de mais uma ajudinha... Peguei a rotina abaixo aqui mesmo do forum. Como nunca utilizei o clipper 5.3, estou me batendo um pouco com o menu. Pergunto: na rotina abaixo é possível acrescentar sub-menus? Como inibir a apresentacao de mensagens a cada opcao ou mudar a linha para sua apresentacao?

Obrigado a todos

Antonio Carlos

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" ) 
cls 

// Aqui neste momento é criado o 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 

Set Color To 
cls 

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 é escolhido 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() }, K_CTRL_C, "Mensagem do primeiro item...", 101) 
oPopUp:AddItem( oItem ) 


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


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

oPopUp:AddItem( MenuItem( MENU_SEPARATOR ) ) 

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

oItem :=MenuItem( "Contas &Bancarias", {|| Alert() }, 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' 

// 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. 
oPopUp:AddItem( oItem1 ) 

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


// Retorna o estado de objeto TopBar para a função Main() 
return ( oTopBar)
carlos_dornelas
Usuário Nível 3
Usuário Nível 3
Mensagens: 400
Registrado em: 25 Ago 2004 21:54

Mensagem por carlos_dornelas »

Ninguém usa esse tipo de menu?

Antonio Carlos
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

Voce esta usando a VisualLIB, com eu nao tenho exemplos da mesma nem muita afinidade sugiro verificar se por acaso existem exemplos junto com ela.

Faça uma busca aqui no forum com o titulo VISUALLIB e provavelmente voce encontrara até links para baixa-la. Podendo inclusive poder encontra-la para Harbour ou xHarbour.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

Re: Ajuda com Menus...

Mensagem por Stanis Luksys »

carlos_dornelas escreveu:Pessoal, bom dia!
Preciso de mais uma ajudinha... Peguei a rotina abaixo aqui mesmo do forum. Como nunca utilizei o clipper 5.3, estou me batendo um pouco com o menu. Pergunto: na rotina abaixo é possível acrescentar sub-menus? Como inibir a apresentacao de mensagens a cada opcao ou mudar a linha para sua apresentacao?
Olá,

Este exemplo fui eu que fiz né... Não usa VL não, essas classes são nativas do Clipper 5.3 e podem ser usadas com xHarbour puro também.

Na minha opinião é o modo mais profissional de se fazer menus com Clipper.

Daqui a pouco eu volto com um exemplo de sub-menu, agora não estou no meu PC.

Ainda hoje, aguarde.

Para mudar a linha de mensagens, mude o 24 dessa linha:
MenuModal( oMenu, 01, 24, 01, 79, "w+/b" )

Para inibir as mensagens simplesmente não as escreva.

Estou lembrando também de alguém que pediu uma vez para que quando saísse da rotina o menu voltasse já aberto naquele último sub-item clicado, igual acontece na Visual Lib. Ainda não consegui... Por enquanto...

PS: No NG do Clipper 5.3 você encontra tudinho pra usar este menu, ele é bem fexível e tem excelentes métodos que podem ser executados de qualquer rotina do sistema, como add/remover itens, habilitar/desabilitar etc...


Valeu!
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

Mensagem por Stanis Luksys »

Olá,

Conforme prometido, aí vai o programa alterado para colocar sub-menu...

Vale dizer que se você não tem familiaridade com essas classes, você sempre poderá ainda usar PROMPT ou ACHOICE, mas ambas opções são bem inferiores. Eu indico assim.

www.luksyssoft.com.br/downloads/classmenu.zip

Desta vez deixei o executável lá também. O sub-menu está em Opções...

Agora ficou Opções -> Opções do Mouse -> Habilita / Desabilita

É isso aí!!
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
carlos_dornelas
Usuário Nível 3
Usuário Nível 3
Mensagens: 400
Registrado em: 25 Ago 2004 21:54

Mensagem por carlos_dornelas »

Valeu Irmão! Muito obrigado! Era isso mesmo que eu precisava!

Aproveitando mais um pouquinho: você poderia me mandar o ng do clipper 5.3 ou indicar onde baixar? Já dei uma fuçada na net, mas não encontrei...

[]s

Antonio Carlos

acdornelas@bol.com.br
carlos_dornelas
Usuário Nível 3
Usuário Nível 3
Mensagens: 400
Registrado em: 25 Ago 2004 21:54

Mensagem por carlos_dornelas »

Stanis, surgiu um probleminha: Quando compilo com o xharbour/gtwvw uma rotina com a opção de submenu, em vez daquela 'setinha' (acho que o chr(16)) aparece um quadradinho. Será que tem como resolver isso ou é uma incompatibilidade com o xharbour?

[]s

Antonio Carlos
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

Quando se usa recursos de mouse nos aplicativos texto aparece um quadradinho, deve ser isto.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
carlos_dornelas
Usuário Nível 3
Usuário Nível 3
Mensagens: 400
Registrado em: 25 Ago 2004 21:54

Mensagem por carlos_dornelas »

Obrigado Rochinha, mas não é nada com o ponteiro do mouse, pois este é exibido corretamente e funciona certinho. Me refiro à outra seta, aquela à direita de um menu que indica novos sub-menus. No DOS é o chr(16) que no xharbour está ficanco assim "►" em vez de ">".

Se alguém tiver uma luz, agradeço muito!

Antonio Carlos
Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

Mensagem por Stanis Luksys »

Olá,

Existem duas possibilidades para correção do erro.

1) Configuração de Codepage para a gtwvw, lá no forum xharbour tem varias postagens demonstrando como corrigir.

2) Você pode configurar qualquer caracter para ser exibido alí (por essas e outras uso essas classes de menu)!

Faça assim:

Código: Selecionar todos

oItem :Style = ">"  // ou qualquer caracter

E quanto ao NG, você encontra para download no meu site, porém somente com o pacote completo do Clipper 5.3.

Isso aí...
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
carlos_dornelas
Usuário Nível 3
Usuário Nível 3
Mensagens: 400
Registrado em: 25 Ago 2004 21:54

Mensagem por carlos_dornelas »

Stanis,

Onde devo inserir essa linha:

oItem :Style = ">" // ou qualquer caracter

Fiz alguns testes e não funfou! Acabei resolvendo acrescentando o caracter '>' nó texto do próprio menu. Assim mesmo valeu! Obrigado.

Antonio Carlos
Avatar do usuário
linux.eo
Usuário Nível 1
Usuário Nível 1
Mensagens: 40
Registrado em: 09 Out 2005 19:23

Mensagem por linux.eo »

Caro Stanis Luksys,

Seu site está offline.

E no site do Yahoo não existe o arquivo.

Seria possível postar o código do menu com
sub-opções aqui no fórum?

Grato.
Avatar do usuário
Augusto
Usuário Nível 3
Usuário Nível 3
Mensagens: 473
Registrado em: 26 Ago 2003 17:50
Localização: Maricá/RJ
Contato:

Mensagem por Augusto »

:xau Fui...
goulart@provsul.com.br

Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
Responder