Calendário e suas funções

calendario

Lembre-se sempre verifique e baixe a versão da data mais atual possível, blz.

Temos então um conjunto de funções que cria e manipula um calendário, temos os sinais em que

podemos conectar nossos métodos e fazer o calendário responder por exemplo ao clicar em uma

data ou passar para o próximo mês e ano. Enfim, é bastante coisinha, mas leia o código com

atenção e verá que não é nada difícil.

Vamos ao código:

O interessante neste programa é que usamos uma caixa vertical dentro de uma horizontal, você

pode fazer isso com quantas caixas quiser, para que seu programa tenha o layout desejado.

Então, aqui temos algumas novidades:

Criando o calendário:

O bom é que é possível modificar a fonte do calendário, veja:

carregando a fonte na variável fonte: (lê uma descrição de fonte a partir de uma string)

atribuindo a fonte ao calendário:

Primeiro parâmetro é a variável do calendário, segundo é a variável da fonte criada anteriormente

Poderíamos fazer diretamente assim: ig.componente_modifique_fonte( calendario , “Arial bold 14”);

mas é bom dominar as duas maneiras, eu pessoalmente acho mais flexível criar a fonte separadamente.

Podemos mudar o visual do calendário mostrando ou escondendo partes dele, permitindo que

o mês e o ano possam ou não ser modificados pelos botões << ou >>, veja:

Bom está função deve ser analisada com paciência. Poderia muito bem ter uma função para mostrar

ou esconder cada ítem de cada vez não é, mas não tem. Você deve usar unicamente esta função,

veja os parâmetros com cuidado:

calendario =  a variável do calendário criado;

mostre_cabecalho = esta é uma variável que criei, seu valor pode ser ig.calendario_mostre_cabecalho para

mostrar o cabeçalho ou nulo para ocultar o cabeçalho do calendário;

nao_mude_mes =  é também um variável criada no programa, seu valor pode ser ig.calendario_nao_mude_mes

para o ano e o mês não serem alterados pelo usuário ou nulo para deixar mudar;

mostre_nomes_dia = outra variável criada no programa e pode ter o valor de ig.calendario_mostre_nomes_dia para

mostrar os nomes dos dias da semana ou nulo para ocultar;

mostre_numeros_semana = se seu valor for ig.calendario_mostre_numeros_semana os números aparecerão na lateral,

se for nulo ficam ocultos;

Esta função altera todos os valores, portanto se você passar somente o parâmetro para mostrar nomes

dos dias da semana a função entende que o restante é nulo e que não é para mostrar,

por isso sempre que chamá-la terá que passar todos os parâmetros ou nulo;

 

Observe que na primeira vez que usei a função ig.calendario_opcoes_visual, joguei as variáveis dentro dela sem

declarar uma se quer, lembre-se que em Prisma se você usar uma variável que não foi atribuído nenhum valor

antes, seu valor então por padrão é nulo, com isso a função entende que não queremos mostrar nada no

calendário, apenas o básico, por isso ele aparece com visual básico e só vai mudando quando clicamos nos

botões de chechagem.

 

Colocamos o calendário dentro da caixa horizontal:

note que usamos a função ig.ad ao invés de ig.caixa_ad, com isso os parâmetros que seriam usados

em ig.caixa_ad são omitidos em ig.ad, ficando o valor padrão.

criamos uma outra caixa mas vertical e colocamos dentro da caixa horizontal ao lado do calendário:

 

Depois criamos os botões de checagem para mudar o visual do calendário, e colocamos todos eles na caixa vertical:

só o primeiro está aqui para ilustrar, mas são quatro no total

 

Se você ainda não entendeu para que foi preciso criar outra caixa veja a ilustração do layout abaixo:

layout_calendario

Criamos a função callback para responder aos cliques dos botões de checagem:

comp é o próprio botão passado através do parâmetro %s na função ig.conecte, e num é uma variável

do tipo número para saber qual botão foi clicado e assim qual visual mostrar ou esconder no calendário;

Dê uma olhada bem cuidadosa no código fonte, modifique alguns parâmetros, execute no

prismacod.exe e aos poucos tenha certeza que você vai entender melhor cada função neste

exemplo. Use a vontade os exemplos, copie e cole nos programas que você criar futuramente,

afinal, é difícil mesmo lembrar de cada função, eu mesmo sempre volto nos exemplos ao fazer

um programa novo.

 

Conectando a função botao_exec nos botões de checagem: (apenas um para ilustrar)

 

Depois disso, temos os métodos conectados aos eventos do calendário:

esta é a função mes_mudado que responde ao evento ig.mes_mudado ( ou ig [ ‘mes_mudado’ ] ), isto é cada vez que

o mês do calendário é alterado esta função é chamada, e dentro dela há outra função que retorna uma tabela

contendo os campos ano, mes, dia, veja:

local t é porque não queremos que a variável t seja acessada fora da função, veja que t recebe os

campos t.ano, t.dia e t.mes, mas aqui usaremos somente o t.mes.

A outras funções são idênticas só mudando o evento e o campo da variável t, veja os outros eventos:

ig.conecte( calendario , ig[‘dia_selecionado’] , ‘dia_selecionado( %s )’ ); reponde ao clique
em um determinado dia;

ig.conecte( calendario , ig.dia_selecionado_duplo_clique , ‘duplo_dia_selecionado(%s)’ );

responde a um duplo clique em um determinado dia;

ig.conecte ( calendario , ig.anterior_mes , ‘anterior_mes (%s)’ ); responde ao atrasar um
mês;
ig.conecte( calendario, ig.proximo_mes , ‘proximo_mes (%s) ‘ ); responde ao adiantar um
mês;
ig.conecte( calendario , ig.anterior_ano , ‘anterior_ano( %s )’ ); ao atrasar um ano;
ig.conecte( calendario , ig [ ‘proximo_ano’] , ‘proximo_ano (%s) ‘ ); ao adiantar um ano;
As duas formas são válidas tanto ig.proximo_ano quanto ig [ “proximo_ano” ] , são
equivalentes e isto pode ser feito com qualquer campo de tabela.
Cada vez que um evento desses acima acontece, a função conectada é executada.
Mais adiante vou fazer outro post sobre calendário colocando novas funções, por enquanto é só.

Bom, é isso aí, espero que possa ser útil, qualquer dúvida postem no fórum, ou deixem uma resposta ao pos, ok!

Att. Adalberto

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *