Segue o código:
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 |
//exemplo de entrada de texto inclua 'igbr' funcao callback ( comp, janela ) local texto = ig.texto_obt_texto ( comp ); ig.msg( janela , "atenção" , texto ); fim jan = ig.janela("Ex entrada texto" ); ig.conecte( jan , ig['destruido'] , 'ig.fimjanela()' ); caixah = ig.caixahorizontal ( falso , 2 ); // criando container caixa horizontal ig.ad( jan , caixah ); //adiciona a caixa na janela rotulo = ig.rotulo"Digite algo: "; ig.caixa_ad( caixah , rotulo , falso ,falso , 1); texto = ig.texto ( ); //criando a entrada de texto ig.caixa_ad( caixah , texto, falso , falso , 2 ) ; //adicionando o texto na caixa horizontal botao = ig.botao"OK" ; ig.conecte( botao , ig[ "clique" ] , [[ callback ( texto , jan ) ]] ); //note que duplos colchetes são usados para strings também; ig.caixa_ad(caixah , botao , falso , falso , 1); ig.componente_mostre_todos( jan ); ig.fimprograma(); |
A novidade no código acima foi a criação de uma caixa horizontal, por isso os componentes colocados dentro dela vão se organizando um ao lado do outro, horizontalmente:
caixah = ig.caixahorizontal( falso , 2 ) ; //falso = não homogêneo (componentes não terão mesmo tamanho)
//e o segundo parâmetro: espaçamento de 2 pixels entre os componentes dentro da caixa.
Comando especial para inserir componentes dentro das caixas, (pode usar o ig.ad também, mas tem menos controle).
ig.caixa_ad ( caixah , texto, falso , falso, 1 ); // vamos explicar cada parâmetro aqui:
caixah = o recipiente, o componente que armazena outros componentes, por isso se chama container (“contedor”);
texto = o componente que estamos adicionando na caixa
falso = quer dizer que não expande quando a janela é redimensionada (horizontalmente).
falso = não preenche todo o espaço quando a janela é redimensionada.
1 = acomodamento, na prática, se aumentar para 100, por exemplo, verá que o componente aumenta o tamanho horizontalmente.
OBS.: o preenchimento não terá efeito se o atributo expandir estiver como falso e o expandir não terá efeito se a caixa for
criada com o parâmetro “homogêneo” em verdadeiro.
experimente trocar os valores, de falso para verdadeiro e redimensione a janela para ver o resultado, aumente também o valor 1 para
200 ou 300 e veja o que acontece.
Dica: se achar difícil lembrar ou entender os atributos, ou mesmo se não quiser ficar repetindo os atributos, faça uma função
com parâmetros em padrão mais usado. ex:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
funcao crie_caixaV( ) retorne ig.caixavertical(falso, 0 ); fim funcao caixa_adicione( caix , comp ) ig.caixa_ad( caix , comp, falso , falso , 0 ); fim uso: caixav = crie_caixaV( ); caixa_adicione ( caixav , botao ); |
salve o arquivo de texto com as funções suas, pode ser com o nome caixa.pris
coloque na pasta plib (que fica na pasta bin/ ) para ficar visível para qualquer programa prisma,
depois basta chamá-la com o comando inclua ‘caixa’ e usar suas funções.
Mais adiante explicarei melhor como fazer bibliotecas próprias. Como viu acima não é difícil.
Algumas vezes, você pode querer apertar ENTER com o cursor dentro do entra texto para
obter uma ação, isso é muito útil em navegadores, por exemplo, ao digitar algo dentro
do entra texto de endereço e pressionar o enter o navegador entende que deve ir para aquela página.
Se você quiser este efeito no programinha acima, isto é, que a mensagem apareça ao apertar a tecla ENTER
sem precisar clicar no botão, adicione a seguinte linha logo abaixo da criação do entra texto:
1 |
ig.conecte ( texto , ig[ "ativado"] , "callback ( texto , jan ) " ); // responde ao pressionar Enter |
seria algo comparado ao conectar o clique no botão, mas como o componente texto não é clicável, logo o sinal a ser conectado
não é o ig.clique mas o ig.ativado. (os eventos podem ser escritos de outra forma se preferir: ig[“clique”] e ig[“ativado”] )
Adicione e veja o resultado.