Antes de tudo, verifique a página de downloads, observe a data, e baixe a versão mais atual de prisma, ok.
Dê uma olhada na página de Documentação, pode haver um link novo por lá também.
Podemos começar, veja o código abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
//exemplo de menu bem mínimo para melhor compreensão inclua 'igbr' //incluindo a biblioteca gráfica janela = ig.janela("Menu exemplo", 250 , 150 ) ; //cria uma janela com título, largura e altura //é necessário criar uma caixa vertical, sempre que for usar um menu, caixa fixa também dá certo caixav = ig.caixavertical ( falso , 0 ); //cria uma caixa vertical (box) ig.ad (janela , caixav ) ; //adiciona a caixa vertical na janela //criando a barra de menu barramenu = ig.menu_barra ( ); menu_arquivo = ig.menu ( ); //criando o menu arquivo = ig.menu_item ( "Arquivo"); //criando o item principal ig.def_menu ( arquivo , menu_arquivo ); //definindo o item principal abrir = ig.menu_item( "Abrir" ); //criando botao item para o botao principal ig.menu_shell_anexe ( menu_arquivo , abrir ); //colocando um item no menu sair = ig.menu_item ( "Sair" ); //criando botao item para o botao principal ig.menu_shell_anexe ( menu_arquivo , sair ); //colocando outro item no menu ig.menu_shell_anexe ( barramenu , arquivo ); //enfim anexando o menu arquivo visivel na barra de menu ig.caixa_ad ( caixav , barramenu , falso , falso , 3); //adicionando a barra de menu na caixa vertical ig.conecte ( janela , ig.destruido , [[ ig.fimjanela ( ) ]] ); //encerra o programa ao fechar a janela ig.conecte ( sair , ig.ativado , 'ig.saia(0) ' ); // conectando função ig.saia ( ) ao evento ig.ativado do menu funcao menu_msg ( ) //esta função será conectada ao botao abrir ig.msg( janela, 'MSG' , 'não implementado ainda' ); fim ig.conecte ( abrir , ig.ativado , 'menu_msg ( ) ' ); ig.componente_mostre_todos ( janela ) ; //tornando a janela e todos os seus componentes visíveis. ig.fimprograma ( ); //inicia o laco a espera de eventos. |
Pode parecer um pouco complicado no início, mas não é. Leia com atenção, caso haja dúvidas em alguma explicação, pergunte
no fórum, certo.
Criar a janela, a caixa vertical não é novidade, vejamos algo novo:
Para criar um Menu ou vários, é necessário antes criar uma barra de menu, segue o comando:
barramenu = ig.menu_barra ( ); cria uma barra de menu e retorna seu id para a variável barramenu. Sempre é importante
armazenar o id de um componente numa variável para futura manipulação do componente.
Próximo passo é criar o menu, bem simples o comando, veja:
menu_arquivo = ig.menu ( ); é o que vai ficar aparecendo na barra de menu, ainda está vazio, mas vamos colocar um item
como principal neste menu adiante.
Criando o item principal, o texto que irá aparecer em cima na barra de menu:
arquivo = ig.menu_item ( “Arquivo”); cria um item de menu, a diferença desse e dos outros pela frente é que este será o
item principal, é nele que quando clicar aparecerá os outros itens do menu. Note que definimos um Texto para ele.
O próximo comando define o item arquivo como menu do menu_arquivo:
ig.def_menu ( arquivo , menu_arquivo ); define o item “Arquivo” como item principal do menu menu_arquivo. Será ele
o texto visível na barra de menu, e que receberá o clique para abrir os outros itens.
Os parâmetros são: ( item , menu ); onde o item é o que contém o texto “Arquivo” e menu é o menu criado pelo comando
ig.menu( );
Criando e anexando itens no menu:
abrir = ig.menu_item( “Abrir” ); bom, aqui criamos outro item, este no entanto, não será como o principal, ele será um submenu;
Após criarmos os outros itens, devemos colocá-los dentro do menu_arquivo, com o seguinte comando:
ig.menu_shell_anexe ( menu_arquivo , abrir ); Atenção para os parâmetros que são: ( menu, item )
Obs.: a ordem de anexar é que determina em que ordem aparecerão os itens no menu.
Fazendo o mesmo com o outro item:
1 2 |
sair = ig.menu_item ( "Sair" ); //criando botao item para o botao principal ig.menu_shell_anexe ( menu_arquivo , sair ); //colocando outro item no menu |
Enfim, colocando o menu na barra de menu para ser visível:
ig.menu_shell_anexe ( barramenu , arquivo );
Só fique atento que o que é anexado na barra não é o menu, mas a variável do item principal, ok.
sendo seus parâmetros: ( barra_de_menu , item_principal ); lembre-se que o item principal é definido
pela função ig.def_menu ( ). Observe que a função é a mesma de anexar itens, o que muda é que anexamos na barra agora.
Pronto, após criarmos e definirmos a barra de menu, com todos os seus itens, incluindo o item principal, podemos
adicionar a barra de menu normalmente na caixa vertical, sem segredo:
ig.caixa_ad ( caixav , barramenu , falso , falso , 3);
o primeiro parâmetro é a caixa vertical onde queremos colocar a barra de menu;
o segundo é a própria barra de menu; temos em sequência um falso dizendo que não se expande verticalmente ao
redimensionar a janela, outro falso definindo que não preenche toda a área da caixavertical, e 3 que seria a dimensão.
Obs.: fiz testes com menu em caixas fixas, o efeito é muito legal, dependendo das coordenadas que você determinar
como posição do menu, ele vai ficar flutuando na caixa fixa, pode determinar x = 0 e y = 0 para ficar em cima.
Note que ficou assim a estrutura:
[Arquivo]
[Abrir]
[Sair ]
Se você quiser um outro menu principal ao lado de Arquivo é só repetir o mesmo processo dele, mudando as variáveis é claro;
Bom, e para acontecer algo ao clicar em um menu, o que tenho que fazer:
O mesmo que para os botões, apenas muda o método (signal ), ao invés de ig.clique será ig.ativado, veja:
ig.conecte ( variavel_item_menu , ig.ativado , [[ funcao_aqui ( ) ]] ); lembre-se que duplos colchetes são strings. Logo passamos
a função conectada como uma string, poderia ser: “funcao_aqui ( ) “;
O primeiro parâmetro é o próprio item_menu a ser conectado, o segundo é o tipo de evento que neste caso é o ig.ativado, se
quiser pode escrevê-lo assim: ig [ “ativado” ] , o resultado é o mesmo.
E por último o parâmetro string da função a ser conectada;
Veja o trecho do exemplo acima:
ig.conecte ( sair , ig.ativado , ‘ig.saia(0) ‘ ) ; aqui, conectamos uma função já existente, a ig.saia ( ), fecha imediatamente o programa.
Neste outro trecho, criamos uma função para conectá-la, apenas apresentando uma mensagem, veja:
1 2 3 4 5 6 7 |
funcao menu_msg ( ) //esta função será conectada ao botao abrir ig.msg( janela, 'MSG' , 'não implementado ainda' ); fim ig.conecte ( abrir , ig.ativado , 'menu_msg ( ) ' ); |
Bom, até a próxima.
Att. Adalberto