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 :

  1. Definir o tamanho do papel

  2. A faixa de impressão

  3. A orientação da impressão

  4. Pode incluir um Título no relatório

  5. Selecionar uma impressora

  6. Configurar a impressora

  7. Definir a ordem de impressão

  8. 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ê :

  1. Resolve o seu problema de impressão com as  grades MSFlexGrid

  2. Não gasta um centavo

  3. 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