relatorios
Moderador: Moderadores
-
Forrest_Gump
- Usuário Nível 1

- Mensagens: 37
- Registrado em: 05 Set 2004 12:59
- Localização: Presidente Prudente - SP
relatorios
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.
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
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
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
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
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)
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)
- software_facil
- Usuário Nível 3

- Mensagens: 211
- Registrado em: 23 Fev 2005 12:19
- Localização: Curitiba/PR
- Contato:
Prezado,
Segue abaixo um pequeno código fonte mostrando como imprimir com visualização através da hbprinter :
Abraços
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)messenger : software_facil@hotmail.com
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
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)
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

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

- Mensagens: 37
- Registrado em: 05 Set 2004 12:59
- Localização: Presidente Prudente - SP
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
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

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

- Mensagens: 37
- Registrado em: 05 Set 2004 12:59
- Localização: Presidente Prudente - SP
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
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
