{"id":450,"date":"2015-01-08T03:22:59","date_gmt":"2015-01-08T03:22:59","guid":{"rendered":"http:\/\/linguagemprisma.net\/?p=450"},"modified":"2015-12-07T15:57:40","modified_gmt":"2015-12-07T19:57:40","slug":"temporizador-botao-checagem","status":"publish","type":"post","link":"https:\/\/linguagemprisma.br4.biz\/blog\/igprisma\/temporizador-botao-checagem\/","title":{"rendered":"Temporizador &#8211; bot\u00e3o checagem"},"content":{"rendered":"<p>Para que serve um temporizador? Bem, imagine que voc\u00ea precise fazer uma fun\u00e7\u00e3o e<\/p>\n<p>que ela tenha de ser executada repetidas vezes a cada intervalo de tempo determinado<\/p>\n<p>por voc\u00ea, e que o programa principal siga em frente executando as outras fun\u00e7\u00f5es.<\/p>\n<p>O temporizador faz isso por voc\u00ea, executa repetidamente a fun\u00e7\u00e3o desejada.<\/p>\n<p>\u00c9 muito \u00fatil para atualizar hor\u00e1rio ou datas num sistema, sem parar a execu\u00e7\u00e3o principal.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/linguagemprisma.net\/wp-content\/uploads\/2015\/01\/temporizador.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-455\" src=\"http:\/\/linguagemprisma.net\/wp-content\/uploads\/2015\/01\/temporizador-300x173.png\" alt=\"temporizador\" width=\"300\" height=\"173\" \/><\/a><\/p>\n<p>Segue o c\u00f3digo de uso do temporizador para fazer um rel\u00f3gio digital, bons estudos:<\/p>\n<pre class=\"lang:prisma decode:true \">\r\n\/\/exemplo temporizador:\r\n\r\ninclua 'igbr'\r\n\r\nfuncao temporizador_exec ( componente , janela )\r\n\r\ntempo = sis.data ( ); \/\/retorna o tempo dia e hora\r\n\r\nig.rotulo_def_texto ( componente , tempo ); \/\/definindo a data como o texto do rotulo\r\nimprima( tempo );\r\n\r\nfim\r\n\r\njanela = ig.janela (\"Temporizador teste\" , 450 , 200 );\r\nig.conecte( janela , ig.destruido , 'ig.saia( )' );\r\n\r\nig.janela_posicione ( janela , 0 , 0 ); \/\/posicionando a janela em coordenadas\u00a0 coluna \u00a0\/ linha\r\n\r\ncaixav = ig.caixavertical( falso , 0 );\r\nig.ad( janela , caixav );\r\n\r\nrotulo = ig.rotulo ( sis.data( ) ) ;\r\n\r\nig.componente_modifique_fonte ( rotulo , \"Arial\",ig.negrito,22 );\r\n\r\ncor = ig.cor( 0 , 0 , 2222222 , '*t' );\/\/o '*t' for\u00e7a o retorno de uma tabela.\r\nig.componente_modifique_fg ( rotulo , ig.estado_normal , cor );\r\n\r\nig.caixa_ad ( caixav , rotulo , verdadeiro , verdadeiro , 2 );\r\n\r\ntemporizador_1 = ig.temporizador ( 1 , \/\/id deve ser de 1 a 10\r\n1000 , \/\/intervalo de tempo em milisegundos\r\njanela ,\r\n[[ temporizador_exec ( rotulo , janela ) ]]\r\n\r\n); \/\/fim temporizador\r\n\r\n\/\/apos criar o temporizador basta inicia-lo:\r\n\r\nig.temporizador_inicie( temporizador_1 , janela );\r\n\/\/o n\u00famero m\u00e1ximo suportado \u00e9 10 temporizadores.\r\n\r\nfuncao callback ( bt )\r\n\r\n\/\/se o botao estiver marcado a funcao abaixo retorna verdadeiro\r\n se ig.botao_seletor_obt_ativo ( bt ) == verdadeiro entao\r\n ig.temporizador_pare ( temporizador_1 , janela );\r\n senao\r\n ig.temporizador_reinicie ( temporizador_1 , janela );\r\n fim\r\n\r\nfim\r\n\r\nbt_pause = ig.botao_checagem ( \"Pausar \/ Continuar temporizador\");\r\nig.conecte( bt_pause , ig.clique , 'callback( %s)');\r\n\r\n\r\nig.caixa_ad( caixav , bt_pause , falso , falso , 2 );\r\n\r\nig.componente_mostre_todos ( janela );\r\nig.fimprograma( );\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Esta \u00e9 a fun\u00e7\u00e3o que ser\u00e1 executada pelo temporizador, j\u00e1 no in\u00edcio do programa:<\/p>\n<pre class=\"lang:prisma decode:true\">funcao temporizador_exec ( componente , janela )<\/pre>\n<p>Dentro dela temos os seguintes comandos:<\/p>\n<p>sis.data( ) retorna uma string do dia e hora, e depois definimos a data como texto do r\u00f3tulo<\/p>\n<pre class=\"lang:prisma decode:true\">tempo = sis.data ( ); \/\/retorna o tempo dia e hora\r\n\r\nig.rotulo_def_texto ( componente , tempo ); \/\/definindo a data como o texto do rotulo\r\nimprima( tempo );<\/pre>\n<p><em>\u00a0No caso, componente \u00e9 o &#8220;%s&#8221; passado como par\u00e2metro no temporizador logo a frente no c\u00f3digo, lembre-se que %s s\u00e3o caracteres que ser\u00e3o substitu\u00eddos por um par\u00e2metro passado automaticamente \u00e0 fun\u00e7\u00e3o callback durante a execu\u00e7\u00e3o.<\/em><\/p>\n<p><em>e tempo \u00e9 a string obtida da data e hor\u00e1rio do sistema com o comando sis.data ( );<\/em><\/p>\n<h3>A novidade mesmo aqui \u00e9 o temporizador que \u00e9 criado pela fun\u00e7\u00e3o ig.temporizador, sua sintaxe \u00e9:<\/h3>\n<p><em><strong>temp = ig.temporizador ( id , intervalo , componente_pai , string_da_funcao_callback );<\/strong><\/em><\/p>\n<p>onde teremo:<\/p>\n<p><strong>id<\/strong> = \u00e9 a identidade do temporizador, \u00e9 um n\u00famero de 1 a 10, apenas esses n\u00fameros poder\u00e3o ser usados,<\/p>\n<p>pois s\u00f3 \u00e9 poss\u00edvel criar 10 temporizadores, uma limita\u00e7\u00e3o \u00e9 claro, mas \u00e9 mais do que suficientes.<\/p>\n<p><strong>intervalo<\/strong> = \u00e9 o tempo de espera para a fun\u00e7\u00e3o ser executada novamente, \u00e9 em milisegundos, isto \u00e9,<\/p>\n<p>se quiser um segundo deve passar o par\u00e2metro 1000 ;<\/p>\n<p><em><strong> componente_pai<\/strong><\/em> = sem esse par\u00e2metro n\u00e3o funciona, d\u00e1 erro. Simplesmente passe a vari\u00e1vel da janela principal,<\/p>\n<p>para que serve este par\u00e2metro? Muito simples, ao ser destru\u00eddo o componente pai o temporizador \u00e9 destru\u00eddo tamb\u00e9m.<\/p>\n<p>e por \u00fatilmo:<\/p>\n<p><em><strong>string_da_funcao_callback<\/strong><\/em> = \u00e9 a fun\u00e7\u00e3o que voc\u00ea criou para ser repetida, deve passar a string dela ex:<\/p>\n<p>se voc\u00ea criou uma fun\u00e7\u00e3o chamada tempori ( comp , janela ) o par\u00e2metro ser\u00e1 [[ tempori ( comp, janela ) ]] , com os<\/p>\n<p>duplos colchetes indicando string.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>\u00a0 Uma vez criado o temporizador ainda falta inici\u00e1-lo, dar a partida, usando a seguinte fun\u00e7\u00e3o:<\/strong><\/p>\n<p>o primeiro par\u00e2metro \u00e9 a vari\u00e1vel que guarda o temporizador, o segundo \u00e9 o componente_pai de novo.<\/p>\n<pre class=\"lang:prisma decode:true\">ig.temporizador_inicie( temporizador_1 , janela );<\/pre>\n<p>Para pausar o temporizador use:<\/p>\n<pre class=\"lang:prisma decode:true\">ig.temporizador_pare ( temporizador_1 , janela );<\/pre>\n<p>&nbsp;<\/p>\n<p>e para reiniciar:<\/p>\n<pre class=\"lang:prisma decode:true\">ig.temporizador_reinicie ( temporizador_1 , janela );<\/pre>\n<p>No exemplo acima coloquei essas fun\u00e7\u00f5es dentro da callback do bot\u00e3o checagem, para que quando estiver ativo o bot\u00e3o<\/p>\n<p>o temporizador pare e se tiver desmarcado, o temporizador reinicia.<\/p>\n<p><strong>Criando o bot\u00e3o checagem, n\u00e3o tem segredo algum, veja:<\/strong><\/p>\n<p>o \u00fanico par\u00e2metro \u00e9 o texto que ir\u00e1 aparecer no bot\u00e3o.<\/p>\n<pre class=\"lang:prisma decode:true\">bt_pause = ig.botao_checagem ( \"Pausar \/ Continuar temporizador\");<\/pre>\n<p><strong>Para conectar uma fun\u00e7\u00e3o neste bot\u00e3o siga a mesma forma dos bot\u00f5es normais, use o sinal ig.clique:<\/strong><\/p>\n<pre class=\"lang:prisma decode:true\">ig.conecte( bt_pause , ig.clique , 'callback( %s)');<\/pre>\n<p>Ora, ainda n\u00e3o entendi o<strong> %s<\/strong> no par\u00e2metro da string da fun\u00e7\u00e3o callback!<\/p>\n<p>Veja \u00e9 muito mais simples do que aparece, o<strong> %s<\/strong> \u00e9 substitu\u00eddo durante a execu\u00e7\u00e3o da callback pelo pr\u00f3prio<\/p>\n<p>componente conectado a ela, que no caso \u00e9 o bt_pause, seria o mesmo que<strong> bt_pause <\/strong>no lugar do<strong> %s<\/strong>:<\/p>\n<pre class=\"lang:prisma decode:true\">ig.conecte( bt_pause , ig.clique , 'callback( bt_pause )');<\/pre>\n<p>por\u00e9m \u00e9 muito mais reaproveit\u00e1vel e flex\u00edvel usar o <strong>%s , <\/strong>muito \u00fatil quando voc\u00ea cria e conecta componentes<\/p>\n<p>dinamicamente por meio de matrizes.<\/p>\n<p>&nbsp;<\/p>\n<h3>Bom, queremos saber quando o bot\u00e3o checagem est\u00e1 marcado ou n\u00e3o e de<\/h3>\n<h3>acordo com isso realizar um comando ou outro, para isso existe a seguinte fun\u00e7\u00e3o<\/h3>\n<h3>que retorna verdadeiro caso o bot\u00e3o esteja marcado ou falso caso ele n\u00e3o esteja,<\/h3>\n<h3>com isso \u00e9 s\u00f3 fazer uma condi\u00e7\u00e3o e pronto:<\/h3>\n<p>O \u00fanico par\u00e2metro \u00e9 o bot\u00e3o a ser verificado, retorno = falso ou verdadeiro<\/p>\n<pre class=\"lang:prisma decode:true\">se ig.botao_seletor_obt_ativo ( bt ) == verdadeiro entao<\/pre>\n<p>No nosso exemplo acima n\u00f3s definimos na condi\u00e7\u00e3o que se ele estiver marcado o temporizador p\u00e1ra<\/p>\n<p>sen\u00e3o o temporizador reinicia:<\/p>\n<pre class=\"lang:prisma decode:true\"> se ig.botao_seletor_obt_ativo ( bt ) == verdadeiro entao\r\n    ig.temporizador_pare ( temporizador_1 , janela );\r\n  senao\r\n    ig.temporizador_reinicie ( temporizador_1 , janela );\r\n  fim<\/pre>\n<p>&nbsp;<\/p>\n<p>Bom, pessoal, \u00e9 isso a\u00ed, at\u00e9 a pr\u00f3xima.<\/p>\n<p>Att. Adalberto<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Para que serve um temporizador? Bem, imagine que voc\u00ea precise fazer uma fun\u00e7\u00e3o e que ela tenha de ser executada repetidas vezes a cada intervalo de tempo determinado por voc\u00ea, e que o programa principal siga em frente executando as outras fun\u00e7\u00f5es. O temporizador faz isso por voc\u00ea, executa repetidamente a fun\u00e7\u00e3o desejada. \u00c9 muito&#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-450","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\/450","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=450"}],"version-history":[{"count":5,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/450\/revisions"}],"predecessor-version":[{"id":1526,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/450\/revisions\/1526"}],"wp:attachment":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/media?parent=450"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/categories?post=450"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/tags?post=450"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}