relatorios

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Forrest_Gump
Usuário Nível 1
Usuário Nível 1
Mensagens: 37
Registrado em: 05 Set 2004 12:59
Localização: Presidente Prudente - SP

relatorios

Mensagem por Forrest_Gump »

ola amigos, gostaria novamente da ajuda de vcs.
meus relatorios , por enquanto, ainda não usarão graficos ou imagens, ou seja, continua igual ao que eu fazia no clipper.

eu gostaria de visualizar este relatorio antes de imprimi-lo

na lib Miniprint, pelo menos nos exemplos que vem com a minigui, eu teria que refazer todo o relatorio.

e na hbprinter eu não estou conseguindo visualizar., pois aparece todo desconfigurado na tela o meu relatorio.

alguem teria algumas dicas para me fornecer, desde ja agradeço.
culik

Relatorio com Preview

Mensagem por culik »

Forest

use a hwgui que na minha opiniao e muito melhor. pois vc usa na hwgui verdadeiros objetos
e na hwgui para mostrar um relatorio antes de imprimir apenas use

objrelatorio:Preview()

aqui um exemplo simples

Function PrnTest
Local oPrinter, oFont

INIT PRINTER oPrinter
IF oPrinter == Nil
Return Nil
ENDIF

oFont := oPrinter:AddFont( "Times New Roman",10 )

oPrinter:StartDoc( .T. )
oPrinter:StartPage()
oPrinter:SetFont( oFont )
oPrinter:Box( 5,5,oPrinter:nWidth-5,oPrinter:nHeight-5 )
oPrinter:Say( "Windows printing first sample !", 50,10,165,26,DT_CENTER,oFont )
oPrinter:Line( 45,30,170,30 )
oPrinter:Line( 45,5,45,30 )
oPrinter:Line( 170,5,170,30 )
oPrinter:Say( "----------", 50,120,150,132,DT_CENTER )
oPrinter:Box( 50,134,160,146 )
oPrinter:Say( "End Of Report", 50,135,160,146,DT_CENTER )
oPrinter:EndPage()
oPrinter:EndDoc()
oPrinter:Preview()
oPrinter:End()


Agora se vc tem relatorios em clipper ainda, a hwgui tem outro metodo para fazer a mesma coisa


Function TestDosClipper(oTest)
Local oPrinter

If MsgYesNo("Printing style clipper to "+Iif(oTest==Nil,"LPT1",oTest),"PrintDos Class Demo")

SET PRINTER TO oTest OF oPrinter

@ 0, 1 PSAY "LINE 0 COL 1" OF oPrinter
@ 10, 11 PSAY "LINE 10 COL 11" OF oPrinter
@ 10, 31 PSAY "LINE 10 COL 31" OF oPrinter
@ 14, 21 PSAY "LINE 14 COL 21" OF oPrinter
@ 30, 34 PSAY "LINE 30 COL 34" OF oPrinter
@ wProw(oPrinter), wPCol(oPrinter) PSAY "LINE "+STR(wProw(oPrinter))+ " COL "+STR(wPcol(oPrinter)) OF oPrinter
@ 40, 24 PSAY "11222333000144" PICTURE "@r 99.999.999/9999-99" OF oPrinter
@ wprow(oPrinter)+1, wPcol(oPrinter) PSAY "Valor" OF oPrinter
@ wprow(oPrinter), wPcol(oPrinter) PSAY 996659.85 PICTURE "@E 999,999,999.99" OF oPrinter
@ wprow(oPrinter), wPcol(oPrinter)+1 PSAY 22.11 OF oPrinter
@ wprow(oPrinter), wPcol(oPrinter)+1 PSAY DATE() OF oPrinter

EJECT OF oPrinter

@ 01, 10 PSAY "End of printer text, the PrintDos Class - Style Clipper" OF oPrinter

wSetPrc(0,0,oPrinter)

END PRINTER oPrinter
oPrinter:preview(oTest) // <-- mostra o preview do relatorio com botoes para mudar de pagina assim como para imprimir

Endif


Return Nil

[]s
Luiz
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

A postagem do colega foi sobre Minigui.

Use a Minigui ela é mais fácil e tem muito mais suporte.
Mas se preferir use o Foxpro que também é muito bom.
Ainda pode usar o VB ou quem sabe o Delphi.
Eu pessoalmente recomendo não fazer nada, deixa em Clipper puro mesmo e o cliente que quer 32 bits que se dane.

Pronto já dei minha "enorme" contribuição na questão do colega.

Tenho certeza que foi totalmente esclarecedora minha postagem assim como "outras".

Se é pra zoar vamos zoar....



Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
software_facil
Usuário Nível 3
Usuário Nível 3
Mensagens: 211
Registrado em: 23 Fev 2005 12:19
Localização: Curitiba/PR
Contato:

Mensagem por software_facil »

Prezado,

Segue abaixo um pequeno código fonte mostrando como imprimir com visualização através da hbprinter :

Código: Selecionar todos

Function Imprime()

         Local nLinha     := 0
         Local nPagina    := 1

         DbSelectArea('nome da tabela')

         INIT PRINTSYS
         SELECT BY DIALOG

         If HBPRNERROR > 0
            Return(Nil)
         Endif

         SET UNITS ROWCOL
         SET PAPERSIZE DMPAPER_LETTER
         SET ORIENTATION PORTRAIT
         SET PREVIEW SCALE 2.5
         SET BIN DMBIN_FIRST
         SET QUALITY DMRES_HIGH
         SET COLORMODE DMCOLOR_COLOR
         SET PREVIEW ON //aqui habilita a visualização

         //você pode definir quantas fontes quiser
         Define Font 'f2' Name 'lucida console' Size 8
         Define Font 'f0' Name 'lucida console' Size 8
         Define Font 'f1' Name 'lucida console' Size 8 Bold

         Select Font 'f0'

         START DOC NAME 'Relatório: nome do relatório'
               START PAGE
               Cabecalho(nPagina)
               nLinha := 7
               While .Not. Eof()
                      @ nLinha, 005 Say tabela->nome FONT 'f0' TO PRINT
                     @ nLinha, 030 Say tabela->telefone  FONT 'f0' TO PRINT
                     nLinha ++
                     If nLinha >= HBPRNMAXROW - 3
                        Rodape()
                        END PAGE
                        START PAGE
                        nPagina ++
                        Cabecalho(nPagina)
                        nLinha := 7
                     Endif
                     tabela->(DbSkip())
               End
         END DOC

         RELEASE PRINTSYS

         Return(Nil)
*_______________________________________________
Function Cabecalho(pPagina)
         @ 01, 005 Picture 'nome da imagem.bmp' Size 03, 10
         @ 01, 020 Say 'TITULO DO RELATORIO' FONT 'f1' TO PRINT
         @ 02, 020 Say 'EMISSÃO  : '+DtoC(Date()) FONT 'f1' TO PRINT
         @ 03, 020 Say 'PÁGINA   : '+StrZero(pPagina,3) FONT 'f1' TO PRINT
         @ 05, 005 Say 'NOME COMPLETO' FONT 'f0' TO PRINT
         @ 05, 030 Say 'TELEFONE'            FONT 'f0' TO PRINT
         @ 06, 05, 06, 150 LINE PEN 'P0'
         Return(Nil)
*________________________________________________
Function Rodape()
         @ HBPRNMAXROW-1, 05, HBPRNMAXROW-1, 150 LINE PEN 'P0'
         @ HBPRNMAXROW,   05 Say 'Impresso em '+DtoC(Date())+' as '+Time() FONT 'f2' TO PRINT
         Return(Nil)
Abraços
messenger : software_facil@hotmail.com
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Isso aí Software Fácil !

Viram como é simples ajudar um colega quando se sabe e quer ajudar ?

Simples, direto e objetivo, tenho certeza que o colega fará bom proveito da postagem.

Agora quando não se sabe ou não se quer é melhor ficar quieto.

Fui...

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Forrest_Gump
Usuário Nível 1
Usuário Nível 1
Mensagens: 37
Registrado em: 05 Set 2004 12:59
Localização: Presidente Prudente - SP

Mensagem por Forrest_Gump »

Obrigado pela disposição em ajudar , amigos.
Forrest_Gump
Usuário Nível 1
Usuário Nível 1
Mensagens: 37
Registrado em: 05 Set 2004 12:59
Localização: Presidente Prudente - SP

Mensagem por Forrest_Gump »

ola amigos, eu coloquei meu sistema para imprimir da forma ensinada acima, contudo mesmo colocando a pagina como A4 e imprimindo na matricial. o rodape esta sendo impresso na folha seguinte.
Alguem poderia me explicar como contarnar este problema.
Desde Ja agradeço
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Mensagem por HASA »

COMPANHEIRO, APENAS AUMENTE A QUANTIDADE DE LINHAS QUE DESEJA QUE PARA A IMPRESSÃO OU SEJA If nLinha >= HBPRNMAXROW - 3 (MUDE PARA 5 OU 10) APENAS PARA TESTES ATÉ ACHAR O NÚMERO IDEL PARA SEUS RELATÓRIOS OK. CUIDADO APENAS COM O SEGUINTE, DEPENDENDO DO DRIVER DE IMPRESSORA USADO PODE SEU NÚMERO NÃO SER EXATO OU SEJA HBPRNMAXROW OLHA O NÚMERO MÁXIMO DE LINHAS DAQUELE DRIVER DE IMPRESSORA, AO MUDAR DE HP PARA EPSON PODE DAR DIFERENÇA, POR PRECAUÇÃO DEIXE UM NÚMERO DE -5 ISSO DEVE SERVIR PARA A MAIORIA DAS IMPRESSORAS OK.
SE VOCÊ PRECISAR DE MAIS LINHAS PORQUE QUER DEIXAR MAIS INFORMAÇÕES NO RODAPÉ SEMPRE DEIXE UMA FOLGA DE 5 LINHAS , PRATICAMENTE NÃO TERÁ PROBLEMAS.
FELIZ 2006 PARA TODOS !!!
:xau
Forrest_Gump
Usuário Nível 1
Usuário Nível 1
Mensagens: 37
Registrado em: 05 Set 2004 12:59
Localização: Presidente Prudente - SP

Mensagem por Forrest_Gump »

obrigado pela ajuda companheiro.
Forrest_Gump
Usuário Nível 1
Usuário Nível 1
Mensagens: 37
Registrado em: 05 Set 2004 12:59
Localização: Presidente Prudente - SP

Mensagem por Forrest_Gump »

amigos, obrigado pela ajuda, resolveu meu problema com o tamanho do papel, contudo me deparei com o seguinte problema.

no meu micro , o mesmo exemplo acima citado imprime corretamente, contudo em outro micro com uma impressora lx-1170 a impressao fica meio maluca, imprimuma parte , passa para outra pagina, etc.

o que poderia ser ??

desde ja agradeço qualquer ajuda, um abraço e feliz ano ano para todos nós
Responder