Imprimindo uma grade MsflexGrid
Os controles de grade , em particular o MSFlexGrid , são muito efetivos para exibir um conjunto de dados. Embora usar o controle MSFlexGrid para exibir dados seja uma tarefa simples , já a impressão da grade não é uma tarefa tão fácil. É verdade que existem no mercado muitos produtos de terceiros que facilitam esta tarefa , mas isto além de custar dinheiro $$$ também implica em aumentar o tamanho da sua aplicação em alguns Mb ( dependendo do tamanho do controle).
É claro que você pode criar a sua própria rotina para impressão de uma grade MSFlexGrid , mas , por que inventar a roda ? Existem várias rotinas prontas com código aberto que você pode usar.
Este artigo vai mostrar como usar uma rotina para impressão de uma grade MSFlexgrid onde você não vai precisar usar nenhum controle OCX. O código é fornecido na forma de um formulário que você inclui no seu projeto e usa. Eu tive a liberdade de traduzir as labels e algumas mensagens internas para facilitar a compreensão , mas a rotina não é de minha autoria.
O formulário PrintGrid
Vou apenas descrever as opções do formulário e mostrar como chamar o formulário a partir do formulário do seu projeto. Abaixo o formulário PrintGrid.
As opções , como você pode ver , são muitas , você pode :
Definir o tamanho do papel
A faixa de impressão
A orientação da impressão
Pode incluir um Título no relatório
Selecionar uma impressora
Configurar a impressora
Definir a ordem de impressão
Aplicar efeitos no texto de impressão
Como Usar ?
Para facilitar você pode carregar o formulário P0001 e salvá-lo como um modelo no diretório :
C:\Program Files\Microsoft Visual Studio\Vb98\Template\Forms
Para inserir o formulário modelo nos seus projetos basta usar a opção Project| Add Form. Se você não quiser fazer isto basta carregar o formulário no seu projeto na opção Add|Form e escolher a aba Existing escolhendo o diretório de localização do formulário.
Como exemplo eu criei um projeto simples onde utilizei um controle MSFlexGrid e um controle Data Control para exibir os dados da tabela Authors do banco de dados Biblio.mdb. Veja abaixo a tela do aplicativo:
O botão - Imprimir Grid - contém a seguinte linha de código que irá chamar a rotina PrintGrid do formulário P0001:
P001.PrintGrid MSFlexGrid1, 1, "Teste de Impressão de Grid", PrintSettings.GRID_NORMAL
Estamos passando como parâmetros: o nome do grid a imprimir (MSFlexGrid1) , o número padrão de cópias ( 1) , o título sugerido ( Teste de Impressão de Grid ) e um código de controle ( GRID_NORMAL ).
Com isto a rotina PrintGrid será chamada e você poderá configurar como deseja imprimir o seu grid através das opções oferecidas no formulário.
Com esta rotina você :
Resolve o seu problema de impressão com as grades MSFlexGrid
Não gasta um centavo
Pode estudar o código fonte e aprender coisas novas
Obs: Você também pode usar a rotina abaixo para imprimir um MsFlexGrid via objeto Printer , mas não é lá essas coisas...
Dim
iTamanho as integer iTamanho = MSFlexGrid.Width MSFlexGrid.Width = Printer.Width Printer.PaintPicture MSFlexGrid.Picture , 0 , 0 Printer.EndDoc MSFlexGrid.Width = iTamanho |
Hoje você ganhou o dia... Faça o download do projeto com o formulário traduzido aqui : PrintGrid.zip ( 18 Kb )
Até mais e volte sempre ...
José Carlos Macoratti