{"id":391,"date":"2015-01-06T22:54:43","date_gmt":"2015-01-06T22:54:43","guid":{"rendered":"http:\/\/linguagemprisma.net\/?p=391"},"modified":"2015-01-06T22:54:43","modified_gmt":"2015-01-06T22:54:43","slug":"criando-menus","status":"publish","type":"post","link":"https:\/\/linguagemprisma.br4.biz\/blog\/igprisma\/criando-menus\/","title":{"rendered":"criando menus"},"content":{"rendered":"<h3>Antes de tudo, verifique a p\u00e1gina de downloads, observe a data, e baixe a vers\u00e3o mais atual de prisma, ok.<\/h3>\n<h3>D\u00ea uma olhada na p\u00e1gina de Documenta\u00e7\u00e3o, pode haver um link novo por l\u00e1 tamb\u00e9m.<\/h3>\n<p><a href=\"http:\/\/linguagemprisma.net\/wp-content\/uploads\/2015\/01\/menu.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-395\" src=\"http:\/\/linguagemprisma.net\/wp-content\/uploads\/2015\/01\/menu.png\" alt=\"menu\" width=\"341\" height=\"273\" \/><\/a><\/p>\n<p>Podemos come\u00e7ar, veja o c\u00f3digo abaixo:<\/p>\n<pre class=\"lang:prisma decode:true\">\/\/exemplo de menu bem m\u00ednimo para melhor compreens\u00e3o\n\ninclua 'igbr' \/\/incluindo a biblioteca gr\u00e1fica\n\njanela = ig.janela(\"Menu exemplo\", 250 , 150 ) ; \/\/cria uma janela com t\u00edtulo, largura e altura\n\n\/\/\u00e9 necess\u00e1rio criar uma caixa vertical, sempre que for usar um menu, caixa fixa tamb\u00e9m d\u00e1 certo\ncaixav  = ig.caixavertical ( falso , 0 ); \/\/cria uma caixa vertical (box)\n\nig.ad (janela , caixav ) ; \/\/adiciona a caixa vertical na janela\n\n\/\/criando a barra de menu\nbarramenu = ig.menu_barra ( );\nmenu_arquivo = ig.menu ( ); \/\/criando o menu\n\narquivo = ig.menu_item ( \"Arquivo\"); \/\/criando o item principal\n ig.def_menu ( arquivo , menu_arquivo ); \/\/definindo o item principal\n \nabrir = ig.menu_item( \"Abrir\" ); \/\/criando botao item para o botao principal\nig.menu_shell_anexe ( menu_arquivo , abrir ); \/\/colocando um item no menu\n\nsair = ig.menu_item ( \"Sair\" );   \/\/criando botao item para o botao principal\nig.menu_shell_anexe ( menu_arquivo , sair ); \/\/colocando outro item no menu\n\nig.menu_shell_anexe ( barramenu , arquivo ); \/\/enfim anexando o menu arquivo visivel na barra de menu\n\n\n \nig.caixa_ad ( caixav , barramenu , falso , falso , 3); \/\/adicionando a barra de menu na caixa vertical\n\nig.conecte ( janela , ig.destruido , [[ ig.fimjanela ( ) ]] ); \/\/encerra o programa ao fechar a janela\n\nig.conecte ( sair , ig.ativado , 'ig.saia(0) ' );  \/\/ conectando fun\u00e7\u00e3o ig.saia ( ) ao evento ig.ativado do menu\n\n\nfuncao menu_msg ( ) \/\/esta fun\u00e7\u00e3o ser\u00e1 conectada ao botao abrir\n          ig.msg( janela,  'MSG' , 'n\u00e3o implementado ainda' );\nfim\n\n\nig.conecte ( abrir , ig.ativado , 'menu_msg ( ) ' );\n\nig.componente_mostre_todos ( janela ) ; \/\/tornando a janela e todos os seus componentes vis\u00edveis.\n\nig.fimprograma ( ); \/\/inicia o laco a espera de eventos.<\/pre>\n<p>&nbsp;<\/p>\n<p>Pode parecer um pouco complicado no in\u00edcio, mas n\u00e3o \u00e9. Leia com aten\u00e7\u00e3o, caso haja d\u00favidas em alguma explica\u00e7\u00e3o, pergunte<\/p>\n<p>no f\u00f3rum, certo.<\/p>\n<p><em>Criar a janela, a caixa vertical n\u00e3o \u00e9 novidade, vejamos algo novo:<\/em><\/p>\n<h3 class=\"lang:prisma decode:true \"><strong>Para criar um Menu ou v\u00e1rios, \u00e9 necess\u00e1rio antes criar uma barra de menu, segue o comando:<\/strong><\/h3>\n<p class=\"lang:prisma decode:true \"><strong><em>barramenu = ig.menu_barra ( );<\/em>\u00a0\u00a0<\/strong> cria uma barra de menu e retorna seu id para a vari\u00e1vel barramenu. Sempre \u00e9 importante<strong><br \/>\n<\/strong><\/p>\n<p class=\"lang:prisma decode:true \">armazenar o id de um componente numa vari\u00e1vel para futura manipula\u00e7\u00e3o do componente.<\/p>\n<h3 class=\"lang:prisma decode:true \"><strong>Pr\u00f3ximo passo \u00e9 criar o menu, bem simples o comando, veja:<\/strong><\/h3>\n<p class=\"lang:prisma decode:true \"><em><strong>menu_arquivo = ig.menu ( );<\/strong><\/em> \u00e9 o que vai ficar aparecendo na barra de menu, ainda est\u00e1 vazio, mas vamos colocar um item<em><br \/>\n<\/em><\/p>\n<p class=\"lang:prisma decode:true \">como principal neste menu adiante.<\/p>\n<h3 class=\"lang:prisma decode:true \">Criando o item principal, o texto que ir\u00e1 aparecer em cima na barra de menu:<\/h3>\n<p class=\"lang:prisma decode:true \"><em><strong>arquivo = ig.menu_item ( &#8220;Arquivo&#8221;);<\/strong> <\/em>cria um item de menu, a diferen\u00e7a desse e dos outros pela frente \u00e9 que este ser\u00e1 o<\/p>\n<p class=\"lang:prisma decode:true \">item principal, \u00e9 nele que quando clicar aparecer\u00e1 os outros itens do menu. Note que definimos um Texto para ele.<\/p>\n<h3 class=\"lang:prisma decode:true \">O pr\u00f3ximo comando define o item arquivo como menu do menu_arquivo:<\/h3>\n<p class=\"lang:prisma decode:true \"><em><strong>ig.def_menu ( arquivo , menu_arquivo );<\/strong><\/em> define o item &#8220;Arquivo&#8221; como item principal do menu menu_arquivo. Ser\u00e1 ele<em><strong><br \/>\n<\/strong><\/em><\/p>\n<p class=\"lang:prisma decode:true \">o texto vis\u00edvel na barra de menu, e que receber\u00e1 o clique para abrir os outros itens.<\/p>\n<p class=\"lang:prisma decode:true \">Os par\u00e2metros s\u00e3o: ( item , menu ); onde o item \u00e9 o que cont\u00e9m o texto &#8220;Arquivo&#8221; e menu \u00e9 o menu criado pelo comando<\/p>\n<p class=\"lang:prisma decode:true \">ig.menu( );<\/p>\n<h3 class=\"lang:prisma decode:true \"><strong>Criando e anexando itens no menu:<\/strong><\/h3>\n<p class=\"lang:prisma decode:true \"><em><strong>abrir = ig.menu_item( &#8220;Abrir&#8221; );<\/strong><\/em> bom, aqui criamos outro item, este no entanto, n\u00e3o ser\u00e1 como o principal, ele ser\u00e1 um submenu;<\/p>\n<p class=\"lang:prisma decode:true \">Ap\u00f3s criarmos os outros itens, devemos coloc\u00e1-los dentro do menu_arquivo, com o seguinte comando:<\/p>\n<p class=\"lang:prisma decode:true \"><em><strong>ig.menu_shell_anexe ( menu_arquivo , abrir );<\/strong>\u00a0 Aten\u00e7\u00e3o para os par\u00e2metros que s\u00e3o: ( menu, item )<\/em><\/p>\n<p class=\"lang:prisma decode:true \"><em>Obs.: a ordem de anexar \u00e9 que determina em que ordem aparecer\u00e3o os itens no menu.<\/em><\/p>\n<h3 class=\"lang:prisma decode:true \"><strong>Fazendo o mesmo com o outro item:<\/strong><\/h3>\n<pre class=\"lang:prisma decode:true\">sair = ig.menu_item ( \"Sair\" );   \/\/criando botao item para o botao principal\nig.menu_shell_anexe ( menu_arquivo , sair ); \/\/colocando outro item no menu<\/pre>\n<h3 class=\"lang:prisma decode:true \">Enfim, colocando o menu na barra de menu para ser vis\u00edvel:<\/h3>\n<p class=\"lang:prisma decode:true \"><em><strong>ig.menu_shell_anexe ( barramenu , arquivo );<\/strong><\/em><\/p>\n<p class=\"lang:prisma decode:true \">S\u00f3 fique atento que o que \u00e9 anexado na barra n\u00e3o \u00e9 o menu, mas a vari\u00e1vel do item principal, ok.<\/p>\n<p class=\"lang:prisma decode:true \">sendo seus par\u00e2metros: ( barra_de_menu , item_principal ); lembre-se que o item principal \u00e9 definido<\/p>\n<p class=\"lang:prisma decode:true \">pela fun\u00e7\u00e3o ig.def_menu ( ).\u00a0 <em>Observe que a fun\u00e7\u00e3o \u00e9 a mesma de anexar itens, o que muda \u00e9 que anexamos na barra agora.<\/em><\/p>\n<p class=\"lang:prisma decode:true \">Pronto, ap\u00f3s criarmos e definirmos a barra de menu, com todos os seus itens, incluindo o item principal, podemos<\/p>\n<p class=\"lang:prisma decode:true \">adicionar a barra de menu normalmente na caixa vertical, sem segredo:<\/p>\n<p class=\"lang:prisma decode:true \"><strong>ig.caixa_ad ( caixav , barramenu , falso , falso , 3);\u00a0 <\/strong><\/p>\n<p class=\"lang:prisma decode:true \">o primeiro par\u00e2metro \u00e9 a caixa vertical onde queremos colocar a barra de menu;<\/p>\n<p class=\"lang:prisma decode:true \">o segundo \u00e9 a pr\u00f3pria barra de menu;\u00a0 temos em sequ\u00eancia um <strong>falso <\/strong>dizendo que n\u00e3o se expande verticalmente ao<\/p>\n<p class=\"lang:prisma decode:true \">redimensionar a janela, outro <strong>falso <\/strong>definindo que n\u00e3o preenche toda a \u00e1rea da caixavertical, e 3 que seria a dimens\u00e3o.<\/p>\n<p class=\"lang:prisma decode:true \"><strong><em>Obs.: fiz testes com menu em caixas fixas, o efeito \u00e9 muito legal, dependendo das coordenadas que voc\u00ea determinar<\/em><\/strong><\/p>\n<p class=\"lang:prisma decode:true \"><strong><em>como posi\u00e7\u00e3o do menu, ele vai ficar flutuando na caixa fixa, pode determinar x = 0 e y = 0 para ficar em cima.<\/em><\/strong><\/p>\n<p class=\"lang:prisma decode:true \">Note que ficou assim\u00a0 a estrutura:<\/p>\n<p><strong>[Arquivo]<\/strong><\/p>\n<p><strong>\u00a0\u00a0 [Abrir]<\/strong><\/p>\n<p><strong>\u00a0\u00a0 [Sair\u00a0 ]<\/strong><\/p>\n<p>Se voc\u00ea quiser um outro menu principal ao lado de Arquivo \u00e9 s\u00f3 repetir o mesmo processo dele, mudando as vari\u00e1veis \u00e9 claro;<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>Bom, e para acontecer algo ao clicar em um menu, o que tenho que fazer:<\/strong><\/h3>\n<p>O mesmo que para os bot\u00f5es, apenas muda o m\u00e9todo (signal ), ao inv\u00e9s de ig.clique ser\u00e1 ig.ativado, veja:<\/p>\n<p>ig.conecte ( variavel_item_menu , ig.ativado , [[ funcao_aqui ( ) ]] );\u00a0 lembre-se que duplos colchetes s\u00e3o strings. Logo passamos<\/p>\n<p>a fun\u00e7\u00e3o conectada como uma string, poderia ser: &#8220;funcao_aqui ( ) &#8220;;<\/p>\n<p>O primeiro par\u00e2metro \u00e9 o pr\u00f3prio item_menu a ser conectado, o segundo \u00e9 o tipo de evento que neste caso \u00e9 o ig.ativado, se<\/p>\n<p>quiser pode escrev\u00ea-lo assim: ig [ &#8220;ativado&#8221; ] , o resultado \u00e9 o mesmo.<\/p>\n<p>E por \u00faltimo o par\u00e2metro string da fun\u00e7\u00e3o a ser conectada;<\/p>\n<p>Veja o\u00a0 trecho do exemplo acima:<\/p>\n<p class=\"lang:prisma decode:true \"><em><strong>ig.conecte ( sair , ig.ativado , &#8216;ig.saia(0) &#8216;<\/strong> ) <\/em> ; aqui, conectamos uma fun\u00e7\u00e3o j\u00e1 existente, a ig.saia ( ), fecha imediatamente o programa.<\/p>\n<p class=\"lang:prisma decode:true \">Neste outro trecho, criamos uma fun\u00e7\u00e3o para conect\u00e1-la, apenas apresentando uma mensagem, veja:<\/p>\n<pre class=\"lang:prisma decode:true\">funcao menu_msg ( ) \/\/esta fun\u00e7\u00e3o ser\u00e1 conectada ao botao abrir\n\n    ig.msg( janela, 'MSG' , 'n\u00e3o implementado ainda' );\n\nfim\n\nig.conecte ( abrir , ig.ativado , 'menu_msg ( ) ' );<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p class=\"lang:prisma decode:true \">Bom, at\u00e9 a pr\u00f3xima.<\/p>\n<p class=\"lang:prisma decode:true \">Att. Adalberto<\/p>\n<p class=\"lang:prisma decode:true \">\n<p class=\"lang:prisma decode:true \">\n<p class=\"lang:prisma decode:true \">\n<p class=\"lang:prisma decode:true \">\n<p class=\"lang:prisma decode:true \">\n","protected":false},"excerpt":{"rendered":"<p>Antes de tudo, verifique a p\u00e1gina de downloads, observe a data, e baixe a vers\u00e3o mais atual de prisma, ok. D\u00ea uma olhada na p\u00e1gina de Documenta\u00e7\u00e3o, pode haver um link novo por l\u00e1 tamb\u00e9m. Podemos come\u00e7ar, veja o c\u00f3digo abaixo: \/\/exemplo de menu bem m\u00ednimo para melhor compreens\u00e3o inclua &#8216;igbr&#8217; \/\/incluindo a biblioteca gr\u00e1fica&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,5],"tags":[],"class_list":["post-391","post","type-post","status-publish","format-standard","hentry","category-igprisma","category-interface_grafica"],"_links":{"self":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/391","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/comments?post=391"}],"version-history":[{"count":0,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/391\/revisions"}],"wp:attachment":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/media?parent=391"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/categories?post=391"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/tags?post=391"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}