Aqui vamos ver como usar desenhos de setas do próprio gtk para colocar em botões,
Simples, não é? Mas muito útil as vezes, veja 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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
// exemplo setas em botoes inclua 'igbr' //inclui a biblioteca de funcoes graficas //uma funcao para criar os botoes com setas automaticamente funcao criar_botao_seta ( tipo_seta , sombra_tipo ) local botao = ig.botao ( ); //cria um botao vazio, sem rotulo nem imagem local seta = ig.seta ( tipo_seta , sombra_tipo ); //cria uma seta com direçao e estilo sombra //adiciona normalmente a set dentro do bot ig.ad ( botao , seta ); ig.componente_mostre ( botao ); //mostrando o botao ig.componente_mostre ( seta ); //mostrando a seta retorne botao; //retornando o id de cada botao criado nesta funcao fim //fim funcao criar_botao_seta janela = ig.janela( ); ig.conecte( janela , "destroy" , "ig.fimjanela( )" ); //se preferir usar o eventos em ingles //senão, basta usar ig.destruido sem aspas no lugar de "destroy" ig.janela_def_titulo (janela, "Exemplos botoes com setas"); ig.janela_def_posicao ( janela , ig.jan_pos_centro ); ig.caixa_def_borda_largura ( janela , 10 ); //definindo a largura da borda da janela //criando uma caixa para colocar os botoes caixa = ig.caixahorizontal ( falso , 0 ); ig.ad ( janela , caixa ); ig.componente_mostre( caixa ); //desta vez estamos mostrando um componente por vez //ao inves de mostra tudo com a janela ///usando a função acima para criar o botoes e as setas // na verdade nem se nota a diferença do tipo de sombra so a direcao da seta. botao = criar_botao_seta ( ig.seta_cima , ig.sombra_dentro ); ig.caixa_ad ( caixa , botao , falso , falso , 3); botao = criar_botao_seta ( ig.seta_baixo , ig.sombra_fora ); ig.caixa_ad ( caixa , botao , falso , falso , 3); botao = criar_botao_seta ( ig.seta_esquerda , ig.sombra_riscado_dentro ); ig.caixa_ad ( caixa , botao , falso , falso , 3); botao = criar_botao_seta ( ig.seta_direita , ig.sombra_riscado_fora ); ig.caixa_ad ( caixa , botao , falso , falso , 3); ig.componente_mostre ( janela ); ig.fimprograma ( ); |
A novidade aqui é criar a seta:
o primeiro parâmetro é o tipo de seta que pode ser: ig.seta_cima, ig.seta_baixo, ig.seta_esquerda e
ig.seta_direita;
o segundo parâmetro é o tipo de enfeite de sombra, quase não se nota a diferença, mas como é
obrigatório este parâmetro vamos lá, as opções são: ig.sombra_dentro, ig.sombra_fora,
ig.sombra_riscado_dentro e ig.sombra_riscado_fora;
1 |
local seta = ig.seta ( tipo_seta , sombra_tipo ); |
Criamos uma função para criar os botões automaticamente com as setas, o que na verdade
é bem simples se você analisar essa função, dentro dela temos nós criamos as setas usando
a função explicada acima, e antes disso criamos um botão vazio, sem rotulo ou imagem,
posteriormente adicionamos a seta dentro do botão com o comando ig.ad, veja:
1 |
ig.ad ( botao , seta ); |
No fim da função retornamos o botão.
Observe que ao utilizarmos a função criar_botao_seta no armazenamos o id do botão
em uma variável a cada criação, isso é possível mas a cada nova atribuição da variável
botao a referência ao botão criado anteriormente some, então não teria como manipularmos
esses botões futuramente, logo o ideal seria criar uma variável para cada botão.
1 2 3 4 5 |
botao = criar_botao_seta ( ig.seta_cima , ig.sombra_dentro ); ig.caixa_ad ( caixa , botao , falso , falso , 3); botao = criar_botao_seta ( ig.seta_baixo , ig.sombra_fora ); ig.caixa_ad ( caixa , botao , falso , falso , 3); |
Bom deixei para o final, vamos relembrar algo,
definindo a largura da borda da janela:
experimente mudar o valor de 10 para 0 ou para 30 execute e veja o resultado, nada melhor
que ver na prática para entender:
1 |
ig.caixa_def_borda_largura ( janela , 10 ); //definindo a largura da borda da janela |
É isso aí pessoal qualquer dúvida poste no fórum sua questão, ok!
Att. Adalberto