{"id":2474,"date":"2016-02-13T20:36:08","date_gmt":"2016-02-14T00:36:08","guid":{"rendered":"http:\/\/linguagemprisma.br4.biz\/blog\/?p=2474"},"modified":"2017-02-24T15:54:35","modified_gmt":"2017-02-24T19:54:35","slug":"caixa-combo-combo-box-em-igbr","status":"publish","type":"post","link":"https:\/\/linguagemprisma.br4.biz\/blog\/igprisma\/caixa-combo-combo-box-em-igbr\/","title":{"rendered":"Caixa combo (combo box) em igbr"},"content":{"rendered":"<p>Caixa combo \u00e9 um componente que exibe uma lista de itens para ser selecionado um.<\/p>\n<p>veja:<\/p>\n<p><iframe loading=\"lazy\" title=\"Combo box\" width=\"760\" height=\"428\" src=\"https:\/\/www.youtube.com\/embed\/yStZKvHtb3c?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<pre class=\"lang:prisma decode:true\">\/\/exemplo de combo box, caixa com uma lista de itens que aparece ao clicar no botao do combo\r\n\r\nlocal ig = inclua'igbr'\r\n\r\nlocal jan = ig.janela('Teste Combo' , 300, 200 );\r\nig.janela_def_posicao( jan , ig.janela_pos_centro );\r\nig.conecte_permutado( jan, ig.destruido, sis.saia , 0 );\r\n\r\nlocal painel = ig.fixo(); \/\/um fixo possui coordenadas fixas para os componentes.\r\nig.ad( jan , painel );\r\n\r\n\/\/criando o combo\r\n\r\nlocal combo = ig.caixa_combo('escolha uma op\u00e7\u00e3o');\r\nig.fixo_ad( painel, combo, 10, 10 );\/\/colocando o combo no fixo, em\/\/ 10x10\r\n\/\/adicionando itens na caixa combo:\r\nig.caixa_combo_anexe_texto( combo, 'azul');\r\nig.caixa_combo_anexe_texto( combo, 'verde');\r\nig.caixa_combo_anexe_texto( combo, 'branco');\r\nig.caixa_combo_anexe_texto( combo, 'amarelo');\r\n\r\n\/\/criando um fun\u00e7\u00e3o para ser chamada ao alterar a caixa combo:\r\nfuncao combo_ex ( comp , dado )\/\/o primeiro parametro \u00e9 o proprio componente conectado, o segundo \u00e9 o dado extra do usu\u00e1rio.\r\n         local texto = ig.caixa_combo_obt_texto_ativo( comp );\r\n         se texto &lt;&gt; 'escolha uma op\u00e7\u00e3o' entao\r\n               local cor = ig.cor_analise( ig[ texto ] );\r\n               ig.componente_modifique_corfundo( dado, ig.estado_normal, cor );\r\n         fim\r\nfim\r\n\/\/para que a fun\u00e7\u00e3o acima seja chamada pelo clique no combo, devemos conecta-la ao combo:\r\nig.conecte_funcao( combo, ig.modificado , combo_ex , jan );\r\n\/\/args: o proprio combo, o tipo de acao (evento) , a fun\u00e7\u00e3o, e um segundo parametro para a fun\u00e7\u00e3o\r\n\r\n\r\n\r\nig.componente_mostre_todos(jan);\r\nig.fimprograma();<\/pre>\n<p>Detalhes:<\/p>\n<pre class=\"lang:prisma decode:true\">local ig = inclua'igbr'<\/pre>\n<p>Incluindo a biblioteca gr\u00e1fica igbr<\/p>\n<pre class=\"lang:prisma decode:true\">local jan = ig.janela('Teste Combo' , 300, 200 );\r\nig.janela_def_posicao( jan , ig.janela_pos_centro );<\/pre>\n<p>Criando uma janela com titulo &#8216;Teste Combo&#8217; e com largura 300 pixels por 200 de altura. E definindo a posi\u00e7\u00e3o da janela como centro da tela (ig.janela_pos_centro).<\/p>\n<p><em>Nota: existem outras posi\u00e7\u00f5es poss\u00edveis, mas as mais importantes s\u00e3o a de cima e: ig.janela_pos_mouse (onde o mouse estiver na tela); ig.janela_pos_nulo (nulo, aleat\u00f3rio);<\/em><\/p>\n<pre class=\"lang:prisma decode:true\">ig.conecte_permutado( jan, ig.destruido, sis.saia , 0 );<\/pre>\n<p>Conectando a fun\u00e7\u00e3o sis.saia() ao evento do clique fechar janela (ig.destruido); isso significa que quando clicarmos no x de fechar a janela, a fun\u00e7\u00e3o sis.saia ser\u00e1 executada com o par\u00e2metro 0 e o programa, portanto, ser\u00e1 fechado.<\/p>\n<p><em>Nota: se chama permutado pois o quarto par\u00e2metro que seria o dado extra, se torna par\u00e2metro da fun\u00e7\u00e3o conectada, que \u00e9 o terceiro argumento.<\/em><\/p>\n<hr \/>\n<pre class=\"lang:prisma decode:true\">local painel = ig.fixo(); \/\/um fixo possui coordenadas fixas para os componentes.<\/pre>\n<p>Criando um fixo que \u00e9 um painel onde podemos colar outros componentes na coordenada desejada. Temos que fazer isso porque a janela s\u00f3 admite um componente colado nela, n\u00e3o mais que um, a l\u00f3gica portanto, \u00e9 colocamos na janela um \u00fanico componente mas um do tipo caixa (fixo, caixavertical, caixahorizontal etc.) e neste componente tipo caixa podemos colocar os demais, como bot\u00f5es, textos, r\u00f3tulos etc.<\/p>\n<p><em>Nota: usamos acima a vari\u00e1vel painel como local, isso pode otimizar o desempenho de um programa Prisma.<\/em><\/p>\n<pre class=\"lang:prisma decode:true\">ig.ad( jan , painel );<\/pre>\n<p>Adicionando o painel fixo na janela.<\/p>\n<pre class=\"lang:prisma decode:true\">local combo = ig.caixa_combo('escolha uma op\u00e7\u00e3o');\r\nig.fixo_ad( painel, combo, 10, 10 );\/\/colocando o combo no fixo, em\/\/ 10x10<\/pre>\n<p>Criando a caixa combo com texto ativo &#8216;escolha uma op\u00e7\u00e3o&#8217; e adicionando-a no painel fixo nas coordenadas x=10, y=10. Primeiro argumento \u00e9 o fixo, segundo \u00e9 o componente a ser inserido, terceiro e quartos args s\u00e3o as coordenadas x e y.<\/p>\n<p><em>Nota: x \u00e9 a coluna e y a linha ok. Caso o argumento string seja omitido na cria\u00e7\u00e3o do combo, nenhum texto ser\u00e1 mostrado como padr\u00e3o.<\/em><\/p>\n<pre class=\"lang:prisma decode:true\">ig.caixa_combo_anexe_texto( combo, 'azul');<\/pre>\n<p>Anexando textos no combo. E assim com os demais itens. A sequ\u00eancia dos itens no combo fica de acordo com a ordem do uso desta fun\u00e7\u00e3o, o primeiro item anexado \u00e9 o segundo no combo, o segundo \u00e9 o terceiro e assim por diante. Isto porque o primeiro \u00e9 o texto padr\u00e3o inserido j\u00e1 na cria\u00e7\u00e3o do combo.<\/p>\n<hr \/>\n<pre class=\"lang:prisma decode:true\">funcao combo_ex ( comp , dado )\/\/o primeiro parametro \u00e9 o proprio componente conectado, o segundo \u00e9 o dado extra do usu\u00e1rio.\r\n         local texto = ig.caixa_combo_obt_texto_ativo( comp );\r\n         se texto &lt;&gt; 'escolha uma op\u00e7\u00e3o' entao\r\n               local cor = ig.cor_analise( ig[ texto ] );\r\n               ig.componente_modifique_corfundo( dado, ig.estado_normal, cor );\r\n         fim\r\nfim<\/pre>\n<p>Esta fun\u00e7\u00e3o \u00e9 uma call back, ou seja ela \u00e9 executada automaticamente quando um componente disparar algum evento. Neste caso, quando o combo mudar o seu valor. Temos o primeiro par\u00e2metro que \u00e9 o pr\u00f3prio componente conectado, segundo \u00e9 o dado extra.<\/p>\n<p>Dentro desta fun\u00e7\u00e3o temos:<\/p>\n<pre class=\"lang:prisma decode:true\">ig.caixa_combo_obt_texto_ativo( comp );<\/pre>\n<p>Esta fun\u00e7\u00e3o retorna o texto ativo no combo, ou seja, o que est\u00e1 vis\u00edvel no combo.<\/p>\n<pre class=\"lang:prisma decode:true\">local cor = ig.cor_analise( ig[ texto ] );<\/pre>\n<p>Cria um objeto cor para ser usado em um componente posteriormente. Seu \u00fanico par\u00e2metro \u00e9 uma vari\u00e1vel cor, ig[&#8216;branco&#8217;], ig[&#8216;amarelo&#8217;], ig[&#8216;marrom&#8217;], ig[&#8216;preto&#8217;], ig[&#8216;azul&#8217;], ou ig.branco, ig.amarelo etc. Veja mais detalhes de cor <a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/cores-em-ig-prisma\/\">&lt;aqui&gt;<\/a>.<\/p>\n<pre class=\"lang:prisma decode:true\">ig.componente_modifique_corfundo( dado, ig.estado_normal, cor );<\/pre>\n<p>Modificando a cor de fundo do componente janela. A constante ig.estado_normal \u00e9 quando o componente em visibilidade padr\u00e3o, temos outro tipo de estado, ig.estado_foco que \u00e9 a apar\u00eancia de um componente modificada quando o mouse estiver em cima. Isso \u00e9 \u00f3timo para bot\u00f5es, sendo poss\u00edvel determinar uma cor padr\u00e3o e uma outra para quando o mouse passar por cima do bot\u00e3o.<\/p>\n<hr \/>\n<pre class=\"lang:prisma decode:true\">ig.conecte_funcao( combo, ig.modificado , combo_ex , jan );<\/pre>\n<p>Conectando uma fun\u00e7\u00e3o ao evento modificado do combo. Assim toda vez que o texto do combo for modificado, a fun\u00e7\u00e3o combo_ex() ser\u00e1 executada. (o primeiro par\u00e2metro \u00e9 o componente a ser conectado, o combo, o segundo par\u00e2metro \u00e9 o evento, ig.modificado; o terceiro par\u00e2metro \u00e9 a fun\u00e7\u00e3o a ser executada (sem os par\u00eanteses) e o quarto \u00e9 o dado extra, no caso a janela.<\/p>\n<pre class=\"lang:prisma decode:true\">ig.componente_mostre_todos(jan);<\/pre>\n<p>Mostrando a janela (jan) com todos os seus componentes filhos.<\/p>\n<pre class=\"lang:prisma decode:true\">ig.fimprograma();<\/pre>\n<p>Inicia o la\u00e7o de eventos do igbr. Sempre deve ser o \u00faltimo comando de um programa gr\u00e1fico igbr, sem ele n\u00e3o funcionar\u00e1.<\/p>\n<hr \/>\n<p>FIM<\/p>\n<p>Falou, at\u00e9 a pr\u00f3xima. Qualquer d\u00favida poste nos coment\u00e1rios ou no <a href=\"http:\/\/linguagemprisma.br4.biz\/prisma_forum\/\" target=\"_blank\">f\u00f3rum<\/a>.<\/p>\n<p>Att. Adalberto<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Caixa combo \u00e9 um componente que exibe uma lista de itens para ser selecionado um. veja: \/\/exemplo de combo box, caixa com uma lista de itens que aparece ao clicar no botao do combo local ig = inclua&#8217;igbr&#8217; local jan = ig.janela(&#8216;Teste Combo&#8217; , 300, 200 ); ig.janela_def_posicao( jan , ig.janela_pos_centro ); ig.conecte_permutado( jan, ig.destruido,&#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],"tags":[],"class_list":["post-2474","post","type-post","status-publish","format-standard","hentry","category-igprisma"],"_links":{"self":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/2474","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=2474"}],"version-history":[{"count":3,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/2474\/revisions"}],"predecessor-version":[{"id":2786,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/2474\/revisions\/2786"}],"wp:attachment":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/media?parent=2474"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/categories?post=2474"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/tags?post=2474"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}