{"id":2942,"date":"2017-03-10T23:28:54","date_gmt":"2017-03-11T03:28:54","guid":{"rendered":"http:\/\/linguagemprisma.br4.biz\/blog\/?page_id=2942"},"modified":"2018-03-17T20:16:32","modified_gmt":"2018-03-18T00:16:32","slug":"tutorial-interface-grafica-igprisma-ii-parte","status":"publish","type":"page","link":"https:\/\/linguagemprisma.br4.biz\/blog\/tutorial-interface-grafica-igprisma-ii-parte\/","title":{"rendered":"Tutorial interface gr\u00e1fica IG prisma &#8212; parte II"},"content":{"rendered":"<h2 style=\"text-align: left;\">p\u00e1ginas: <a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/tutorial-interface-grafica-igprisma\/\">1<\/a> &#8211; <strong>&lt;<a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/tutorial-interface-grafica-igprisma-ii-parte\/\">2<\/a>&gt;<\/strong> &#8211; <a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/componentes-graficos\/\">3<\/a>\u00a0&#8211; <a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/tutorial-interface-grafica-ig-prisma-parte-iv\/\">4<\/a><\/h2>\n<h2 style=\"text-align: center;\"><\/h2>\n<h1><\/h1>\n<hr \/>\n<h1><\/h1>\n<h1>1 &#8211; Temporizadores<\/h1>\n<p>&nbsp;<\/p>\n<p>Temporizador ou repetidor \u00e9 uma fun\u00e7\u00e3o criada para ser executada automaticamente a cada intervalo de tempo determinado pelo programador. Muito \u00fatil para datas, rel\u00f3gios, an\u00e1lise de dados, etc.<\/p>\n<p>temp.prisma<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2943\" src=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2017\/03\/ig_temp-300x227.png\" alt=\"ig_temp\" width=\"300\" height=\"227\" srcset=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2017\/03\/ig_temp-300x227.png 300w, https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2017\/03\/ig_temp.png 302w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Segue o c\u00f3digo:<\/p>\n<pre class=\"lang:prisma decode:true\">\/\/timers - temporizadores\r\n\r\ninclua'ig'\r\n\r\nfuncao principal()\r\n  local jan = ig.janela(\"Temporizador\", 300,200);\r\n  ig.conecte_funcao(jan, ig.destruido, ig.fimjanela);\r\n  \r\n  local rot = ig.rotulo(\"--:--:-- -- --\/--\/----\");\r\n  ig.ad(jan, rot);\r\n  \r\n  Temp = ig.temporizador(100, temp, rot); \/\/criando temporizador.\r\n  Temp2 = ig.temporizador(10, temp2, jan); \/\/outro temporizador.\r\n  \r\n  \r\n  ig.componente_mostre_todos(jan);\r\n  ig.fimprograma();\r\n  ig.temporizador_remova(Temp);\/\/removendo o temporizador.\r\n  ig.temporizador_remova(Temp2);\r\n  retorne 0;\r\nfim \r\n\r\nfuncao temp(rot)\r\n  local hora = sis.data(\"%H:%M:%S -- %d\/%m\/%Y\");\r\n  ig.rotulo_def_texto(rot, hora);\r\nfim\r\n\r\nlocal contador = 1;\r\nfuncao temp2(jan)  \r\n  ig.janela_def_titulo(jan, contador);\r\n  contador = contador + 1;\r\nfim\r\n<\/pre>\n<p>Detalhes:<\/p>\n<p>No in\u00edcio o ig tinha o n\u00famero de temporizadores limitado a 10. Atualmente, n\u00e3o h\u00e1 mais esse limite. O \u00fanico limite \u00e9 o hardware.<\/p>\n<pre class=\"lang:prisma decode:true\">Temp = ig.temporizador(100, temp, rot);<\/pre>\n<p>Criamos um temporizador que de 100 a 100 milissegundos executa a fun\u00e7\u00e3o temp, e como dado extra passo o r\u00f3tulo rot.<\/p>\n<p><em>Observe que ao criar o temporizador, ele, automaticamente, j\u00e1 come\u00e7a a executar a fun\u00e7\u00e3o.<\/em><\/p>\n<p>Vejamos a fun\u00e7\u00e3o conectada a esse temporizador:<\/p>\n<pre class=\"lang:prisma decode:true\">funcao temp(rot)\r\n  local hora = sis.data(\"%H:%M:%S -- %d\/%m\/%Y\");\r\n  ig.rotulo_def_texto(rot, hora);\r\nfim<\/pre>\n<p>Esta fun\u00e7\u00e3o pega a hora e data e insere a string no r\u00f3tulo.<\/p>\n<pre class=\"lang:prisma decode:true\">Temp2 = ig.temporizador(10, temp2, jan); \/\/outro temporizador<\/pre>\n<p>Criamos outro temporizador, que de 10 em 10 milissegundos executa a fun\u00e7\u00e3o temp2 passando a janela &#8216;jan&#8217; como dado extra.<\/p>\n<p>A sua fun\u00e7\u00e3o \u00e9:<\/p>\n<pre class=\"lang:prisma decode:true\">local contador = 1;\r\nfuncao temp2(jan)  \r\n  ig.janela_def_titulo(jan, contador);\r\n  contador = contador + 1;\r\nfim<\/pre>\n<p>Ela incrementa o valor de contador e o define como t\u00edtulo da janela.<\/p>\n<hr \/>\n<pre class=\"lang:prisma decode:true\"> ig.temporizador_remova(Temp);\/\/removendo o temporizador.\r\n ig.temporizador_remova(Temp2);<\/pre>\n<p>E, por fim, removemos o temporizador.<\/p>\n<p>S\u00f3 existe essas duas fun\u00e7\u00f5es: uma para criar e outra para excluir o temporizador.<\/p>\n<p>Veja um exemplo com bot\u00e3o inicie e pare:<\/p>\n<pre class=\"lang:prisma decode:true \">inclua'igbr'\r\n\r\ncont = 0; \/\/variavel global\r\nfuncao tmp_func(dado)\r\n    cont = cont + 1;\r\n    ig.rotulo_def_texto(rot,cont);\r\n    imprima(dado, cont);\r\nfim\r\n\r\nfuncao timer(comp, dado)\r\n   tag = ig.temporizador( 1 , tmp_func , 'timer-&gt;' );\r\nfim\r\n\r\nfuncao sair(comp, dado)\r\n   se tag entao\r\n     ig.temporizador_remova(tag);\r\n     tag = nulo;\r\n   fim\r\n   sis.saia(0);\r\nfim\r\n\r\nfuncao remove(comp,dado)\r\n    \r\n   se tag entao\r\n     ig.temporizador_remova(tag);\r\n     tag = nulo;\r\n   fim\r\nfim\r\n\r\nfuncao principal()\r\n ja = ig.janela();\r\n ig.conecte_funcao( ja, ig.destruido, sair);\r\n\r\n painel = ig.fixo();\r\n ig.ad(ja,painel);\r\n rot = ig.rotulo'numero aqui';\r\n ig.fixo_ad(painel, rot,10,10);\r\n bt = ig.botao(' inicie ');\r\n ig.conecte_funcao( bt, ig.clique,timer);\r\n ig.fixo_ad(painel, bt, 70 , 100); \r\n\r\n btpare = ig.botao' pare ';\r\n ig.fixo_ad(painel, btpare, 0,100);\r\n ig.conecte_funcao(btpare, ig.clique,remove);\r\n ig.componente_mostre_todos(ja); \r\n \r\n ig.fimprograma();\r\n retorne 0; \r\nfim \/\/fim principal();\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Veja a imagem:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2944\" src=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2017\/03\/ig_temp2.png\" alt=\"ig_temp2\" width=\"125\" height=\"156\" \/><\/p>\n<p>&nbsp;<\/p>\n<h1>2 &#8211; Cont\u00eainer &#8211; Painel duplo<\/h1>\n<p>&nbsp;<\/p>\n<p>Esse cont\u00eainer \u00e9 muito \u00fatil quando voc\u00ea quer dividir uma janela em duas partes separadas por uma barra m\u00f3vel. Ent\u00e3o \u00e9 poss\u00edvel colocar componentes na parte 1 e na parte 2.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2779\" src=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2017\/02\/painel-duplo-300x244.png\" alt=\"painel-duplo\" width=\"300\" height=\"244\" srcset=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2017\/02\/painel-duplo-300x244.png 300w, https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2017\/02\/painel-duplo.png 323w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Como pode-se perceber na imagem, podemos criar pain\u00e9is na horizontal e na vertical, inclusive colocar um painel dentro do outro.<\/p>\n<p>Salve como painel_duplo.prisma<\/p>\n<pre class=\"lang:prisma decode:true\">local ig = inclua'igbr'\r\n\r\nfuncao principal()\r\n local jan = ig.janela();\r\n ig.conecte_permutado( jan, ig.destruido, ig.fimjanela );\r\n local painelv = ig.painelv();\r\n local entra_texto=ig.texto('isto \u00e9 um entra texto');\r\n ig.texto_selecione(entra_texto,3,8);\r\n ig.painel_ad1( painelv,entra_texto);\r\n local txt = ig.texto_area()\r\n ig.painel_ad2( painelv, txt );\r\n ig.texto_area_def_texto( txt , [[Este \u00e9 um \r\ncomponente \u00e1rea de texto multilinha\r\ncom ele podemos criar editores igual ao \r\nbloco de notas\r\n]]\r\n ) \r\n local painelh = ig.painelh();\r\n ig.painel_ad2(painelh, painelv);\r\n local bt = ig.botao('Bot\u00e3o no painel h1');\r\n ig.painel_ad1(painelh, bt);\r\n ig.ad(jan,painelh);\r\n ig.componente_mostre_todos(jan)\r\n ig.loop();\/\/ou ig.fimprograma(); \/\/use qual preferir.\r\nfim \/\/fim principal();\r\n<\/pre>\n<p>Detalhes:<\/p>\n<pre class=\"lang:prisma decode:true\">local jan = ig.janela();\r\nig.conecte_permutado( jan, ig.destruido, ig.fimjanela );<\/pre>\n<p>J\u00e1 dentro da fun\u00e7\u00e3o principal() criamos a janela e conectamos a fun\u00e7\u00e3o ig.fimjanela()\u00a0 ao evento destru\u00eddo da janela. (Nunca se esque\u00e7a desse comando, ou seu programa ficar\u00e1 rodando em background ap\u00f3s fechar a janela)<\/p>\n<pre class=\"lang:prisma decode:true\">local painelv = ig.painelv();<\/pre>\n<p>Criamos o painel vertical<\/p>\n<pre class=\"lang:prisma decode:true\"> local entra_texto=ig.texto('isto \u00e9 um entra texto');\r\n ig.texto_selecione(entra_texto,3,8);\r\n ig.painel_ad1( painelv,entra_texto);<\/pre>\n<p>Criamos um entra texto com texto padr\u00e3o, definimos a sele\u00e7\u00e3o do 3\u00ba ao 8\u00ba caractere. E colocamos na parte 1 do painel usando a fun\u00e7\u00e3o painel_ad1(painel, componente);<\/p>\n<p>Obs. ad1 significa <strong>ad<\/strong>icione na parte<strong> 1<\/strong><\/p>\n<pre class=\"lang:prisma decode:true\"> local txt = ig.texto_area()\r\n ig.painel_ad2( painelv, txt );\r\n ig.texto_area_def_texto( txt , [[Este \u00e9 um \r\ncomponente \u00e1rea de texto multilinha\r\ncom ele podemos criar editores igual ao \r\nbloco de notas\r\n]]\r\n )<\/pre>\n<p>No trecho acima, criamos uma \u00e1rea de texto, colocamos na parte 2 do painel usando a fun\u00e7\u00e3o ig.painel_ad2(painel,componente). E definimos o texto padr\u00e3o que aparece na \u00e1rea de texto.<\/p>\n<hr \/>\n<pre class=\"lang:prisma decode:true\">local painelh = ig.painelh();\r\nig.painel_ad2(painelh, painelv);<\/pre>\n<p>Aqui, criamos um segundo painel duplo, mas desta vez horizontal, e colocamos na sua parte 2 o painel duplo vertical criado anteriormente.<\/p>\n<hr \/>\n<pre class=\"lang:prisma decode:true\"> local bt = ig.botao('Bot\u00e3o no painel h1');\r\n ig.painel_ad1(painelh, bt);<\/pre>\n<p>Criamos um bot\u00e3o e colocamos na parte 1 do painel horizontal.<\/p>\n<hr \/>\n<pre class=\"lang:prisma decode:true\">ig.ad(jan,painelh);\r\nig.componente_mostre_todos(jan)\r\nig.loop();\/\/ou ig.fimprograma();<\/pre>\n<p>Enfim, colocamos o painel horizontal dentro da janela e mostramos a janela com todos os seus componentes filhos. Ap\u00f3s isso iniciamos o la\u00e7o de eventos do igbr.<\/p>\n<p>Note que desta vez usei ig.loop() para o la\u00e7o ao inv\u00e9s de ig.fimprograma(); tanto faz use o que preferir.<\/p>\n<p>N\u00e3o esque\u00e7a de fechar a fun\u00e7\u00e3o principal com o seu respectivo &#8216;fim&#8217;.<\/p>\n<p><strong>Dicas:<\/strong><\/p>\n<p>1 &#8211; Note que s\u00f3 colocamos um componente por vez dentro de cada parte dos pain\u00e9is duplos.<\/p>\n<p>N\u00e3o \u00e9 poss\u00edvel colocar mais de um componente diretamente, mas lembre-se existem as caixas (caixavertical(), caxahorizontal(), fixo(), tabela() ). Basta voc\u00ea colocar um outro cont\u00eainer caixa e p\u00f4r os componentes dentro dele.<\/p>\n<p>Ent\u00e3o fica assim:<\/p>\n<ol>\n<li>Crie componentes,<\/li>\n<li>Coloque-os dentro de caixas que aceitam mais de um.<\/li>\n<li>Crie painel duplo.<\/li>\n<li>Coloque a caixa com seus v\u00e1rios componentes dentro do painel.<\/li>\n<li>Coloque o painel dentro da janela e pronto!<\/li>\n<\/ol>\n<p>2 -Para controlar o tamanho das partes do painel duplo basta voc\u00ea definir o tamanho do componente que est\u00e1 dentro dele.<\/p>\n<p>&nbsp;<\/p>\n<h1>3 &#8211; Cont\u00eainer &#8211; Janela com barras de rolagem<\/h1>\n<p>&nbsp;<\/p>\n<p>Muito \u00fatil quando queremos uma \u00e1rea deslizante para movimentar os componentes que est\u00e3o fora do limite vis\u00edvel da janela, veja:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2956\" src=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/06\/ig_Janela-rolagem-300x134.png\" alt=\"ig_Janela rolagem\" width=\"300\" height=\"134\" srcset=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/06\/ig_Janela-rolagem-300x134.png 300w, https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/06\/ig_Janela-rolagem.png 402w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>janela_rolagem.prisma<\/p>\n<pre class=\"lang:prisma decode:true\">\/\/scrolled window (janela rolagem)\r\n\r\ninclua'igbr'\r\n\r\nfuncao principal()\r\n local janela = ig.janela('Janela rolagem' , 400 , 150);\r\n ig.janela_destrua(janela);\r\n ig.janela_def_posicao( janela , ig.janela_pos_centro);\r\n ig.caixa_def_borda_largura( janela , 5);\r\n\r\n local janela_rolagem = ig.janela_rolagem();\r\n ig.ad( janela , janela_rolagem);\r\n\r\n local fixo = ig.fixo();\r\n ig.janela_rolagem_ad( janela_rolagem, fixo);\r\n\r\n local botao1 = ig.botao'botao1';\r\n local botao2 = ig.botao'botao2';\r\n ig.fixo_ad( fixo, botao1,0,500);\r\n ig.fixo_ad( fixo, botao2,10,10);\r\n ig.componente_mostre_todos( janela );\r\n ig.fimprograma();\r\nfim \/\/fim principal();<\/pre>\n<p>Detalhes:<\/p>\n<pre class=\"lang:prisma decode:true\">local janela_rolagem = ig.janela_rolagem();\r\nig.ad( janela , janela_rolagem);<\/pre>\n<p>Acima, criamos a janela de rolagem e a adicionamos na janela.<\/p>\n<pre class=\"lang:prisma decode:true\">local fixo = ig.fixo();<\/pre>\n<p>Criamos um painel fixo (coordenadas fixas);<\/p>\n<pre class=\"lang:prisma decode:true\">ig.janela_rolagem_ad( janela_rolagem, fixo);<\/pre>\n<p>Adicionamos, facilmente, o painel fixo na janela de rolagem com a fun\u00e7\u00e3o <strong>ig.janela_rolagem_ad():<\/strong><\/p>\n<p>Par\u00e2metros:<\/p>\n<p>1 &#8211; a janela de rolagem.<\/p>\n<p>2 &#8211; o componente que se quer adicionar na janela de rolagem.<\/p>\n<pre class=\"lang:prisma decode:true\"> local botao1 = ig.botao'botao1';\r\n local botao2 = ig.botao'botao2';\r\n ig.fixo_ad( fixo, botao1,0,500);\r\n ig.fixo_ad( fixo, botao2,10,10);<\/pre>\n<p>Criamos dois bot\u00f5es e colocamos no painel fixo, em coordenadas bem distantes um do outro, para que um deles fique oculto e assim precisemos rolar a janela de rolagem para v\u00ea-lo.<\/p>\n<pre class=\"lang:prisma decode:true\">ig.componente_mostre_todos( janela );\r\nig.fimprograma();\r\nfim \/\/fim principal();<\/pre>\n<p>Mostramos a janela com todos os seus componentes filhos. Iniciamos o la\u00e7o de eventos e fechamos a fun\u00e7\u00e3o principal com o respectivo &#8216;fim&#8217;.<\/p>\n<p>Por enquanto \u00e9 isso, at\u00e9 mais.<\/p>\n<p>Att. Adalberto<\/p>\n<p>&nbsp;<\/p>\n<h2 style=\"text-align: left;\">p\u00e1ginas: <a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/tutorial-interface-grafica-igprisma\/\">1<\/a> &#8211; <strong>&lt;<a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/tutorial-interface-grafica-igprisma-ii-parte\/\">2<\/a>&gt;<\/strong> &#8211; <a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/componentes-graficos\/\">3<\/a>\u00a0&#8211; <a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/tutorial-interface-grafica-ig-prisma-parte-iv\/\">4<\/a><\/h2>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>p\u00e1ginas: 1 &#8211; &lt;2&gt; &#8211; 3\u00a0&#8211; 4 1 &#8211; Temporizadores &nbsp; Temporizador ou repetidor \u00e9 uma fun\u00e7\u00e3o criada para ser executada automaticamente a cada intervalo de tempo determinado pelo programador. Muito \u00fatil para datas, rel\u00f3gios, an\u00e1lise de dados, etc. temp.prisma Segue o c\u00f3digo: \/\/timers &#8211; temporizadores inclua&#8217;ig&#8217; funcao principal() local jan = ig.janela(&#8220;Temporizador&#8221;, 300,200); ig.conecte_funcao(jan,&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"tpl-full-width.php","meta":{"footnotes":""},"class_list":["post-2942","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/pages\/2942","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/types\/page"}],"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=2942"}],"version-history":[{"count":13,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/pages\/2942\/revisions"}],"predecessor-version":[{"id":3205,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/pages\/2942\/revisions\/3205"}],"wp:attachment":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/media?parent=2942"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}