segunda-feira, 23 de setembro de 2013

Impressão com o Método Canvas - Pt. 1

Dentre os diversos desafios que a minha profissão oferece, há um tempo atrás fui confrontado com um desafio interessante!

Fazer a impressão de relatórios por meio do método Canvas. Imagine só fazer um relatório inteirinho no código! Pois é… é assim que foi feito.

Vantagens? Bom se você considerar o fato de que por meio deste não é necessário nenhum componente externo para fazer relatórios é uma vantagem bem relevante... principalmente porque desta forma você manipula do jeito que quiser o seu relatório, sem correr o risco de sair fora da folha, ou de não ter espaço. Você estará livre dos problemas insensatos do QReport (que já está obsoleto, mas ainda é visto por aí) de simplesmente não aparecer o campo relacionado, e estará livre dos sub relatórios do Report Builder, por exemplo. É só instanciar uma nova query e montar o select desejado, depois escrever o campo na posição desejada… mas bom, isto nós veremos com calma mais adiante.

Desvantagens? Pense na manutenção disto. Pronto, não preciso dizer mais nada. Não que seja complicado, aliás, muito pelo contrário, é até divertido de montar os relatórios, só que demora muito. Se compararmos com componentes externos, depois que o relatório está pronto, mudar um campo de lugar ou mesmo substituí-lo por outro é mais rápido do que alterar o código.

Claro que se pusermos na balança, há mais vantagens do que desvantagens, principalmente pelo fato de que só teremos “problemas” (isto mesmo, entre aspas) com o método Canvas quando formos mudar as posições dos campos, e não substituí-los.

Consideração Importante: Um relatório é medido em Pixels na tela. Qual a importância de termos isto em mente? De uma impressora para outra sempre teremos problemas de pixels, pois as medidas são diferentes, uma impressora pode utilizar mais ou menos pixels para impressão, principalmente de uma marca para outra.

Aí não dá pra pedir para o usuário comprar a impressora X ou Y em função do seu relatório ter sido testado só na impressora X ou Y, não é mesmo? E o que é pior! Já imaginou, fazer um relatório diferente para cada modelo e marca de impressora que houver no mercado?!

E aí, como resolvemos este tipo de problema? Trabalhando com porcentagem e não com medidas fixas.

Entendendo melhor, se quisermos escrever alguma coisa no meio da folha e imaginar que ela tenha, por exemplo, 250 pixels de largura, num primeiro momento, faríamos assim:

250 / 2 = 125, logo, é só informar no código que a coluna 125 e a linha 1 (X e Y, reparou!?) que teríamos o meio da página na primeira linha. Mas uma folha para a impressora X pode ter a medida de 500 pixels, o que resultaria em ¼ deste valor, e o nosso relatório já começaria desalinhado.

Como eu já disse, pra resolver isto, pegamos sempre a porcentagem da folha, e informamos a posição em porcento, e não em valores reais. Se eu disser que quero 50% do total de colunas da linha 1 eu sempre estarei no meio da folha, entendeu? Assim, não importa se  uma impressora considere 500 ou 250 pixels.

Nas próximas atualizações falaremos um pouco mais de código e veremos como pegar o tamanho da página, como proporcionar isso, dentre diversas outras abordagens.

Procurei dividir este assunto em partes pra não ficar muito cansativo e depois de terminar os artigos, vou confeccionar vídeo aulas sobre o mesmo assunto.. acredito que seja de grande importância e enquanto estive pesquisando, descobri que muitas pessoas têm dúvidas sobre isso!

Pessoal, vou ficando por aqui! Espero que tenham gostado e até a próxima! Um forte abraço!

Nenhum comentário:

Postar um comentário