Clipper On Line • Ver Tópico - estou tentando entender como imprime no hmg

estou tentando entender como imprime no hmg

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

estou tentando entender como imprime no hmg

Mensagempor Trazom » 11 Jun 2019 15:26

Ola amigos,
Estou fazendo meu primeiro sistema em hmg, e estou com muita dificuldade em entender impressão. Pelo que vi nuns posts acho que ainda a melhor forma é gerar um arquivo txt ou pdf e enviar para impressora via nodosimp ou outro.
Pelo menos existe alguma forma de abrir o díalogo de impressao do windows para imprimir o arquivo gerado ?
Imagem

Harbour 3.2 HMG 1.2a NSX
Evandro
Pelo fato de exercitar bem a própria arte,
cada um pretendia ser sapientíssimo também nas
outras coisas de maior importância,
e esse erro obscurecia o seu saber

Platão, Apologia de Sócrates
Avatar de usuário

Trazom
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 260
Data de registro: 14 Ago 2003 01:01
Cidade/Estado: Maceió/AL
Curtiu: 0 vez
Mens.Curtidas: 1 vez

estou tentando entender como imprime no hmg

Mensagempor rubens » 11 Jun 2019 15:53

Boa tarde...

Evandro...
Você pode usar do jeito que usava, mas aí não vai evoluir..
O que muda então? você pode usar qualquer impressora instalada no windows, direto nela sem programas externos. O que acontece é que você tem que saber se a impressão é raw ou gráfica (spooler). Para ficar mais fácil pensa assim, impressora matricial e mini impressora, térmica ou não é raw já as laser e jato de tinta mais moderna ( da hp1132, hp1102, brother etc) são gráficas, spooler.
Aí fica assim:
Impressora matricial você usa o winprintfileraw(). Usa os mesmos relatórios que tem hoje, mas tem que gerar o relatório em um txt e no final do relatorio manda esse txt na função WinprintFileraw(). Usa os mesmos comandos que você usava no clipper para negrito, sublinhado e etc, não precisa mudar a formatação.
Agora se a impressora é laser ou jato (gráfica) aí tem que usar a função da minigui para impressão gráfica.
Eu adaptei uma função (na realidade várias funções) que quando manda imprimir e escolhe a impressora, a própria função define se é matricial (raw) ou gráfica. Se for matricial manda direto para impressora se for gráfica gera o pdf e visualiza para impressão.
De toda forma tem que gerar o relatório em TXT.
a função que tô falando quando a impressora é gráfica, a função lê os comandos esc/p (chr) e aumenta/diminui e coloca comando negrito, expandido, condensado simulando a impressora raw(matricial).
O Sistema de impressão da impressora gráfica é diferente da matricial porque você precisa posicionar em pixels e na matricial é sequencial linha,coluna.
Veja o exemplo de um orçamento gerado pela função.
OR016806.pdf
(2.03 KiB) Baixado 180 vezes

link da função
http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=18184&p=114739&hilit=printfileraw#p114739

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

estou tentando entender como imprime no hmg

Mensagempor JoséQuintas » 11 Jun 2019 20:41

Trazom escreveu:Estou fazendo meu primeiro sistema em hmg, e estou com muita dificuldade em entender impressão


Se não pesquisar, não vai ir muito longe.
Já olhou nessas PASTAS, elas contém um ou mais exemplos:

HMG
pasta samples\printsystem

HMG Extended
pastas samples\basic\graphprint, samples\basic\graphprint_2, samples\basic\graphprint_bitmap, samples\basic\print, samples\basic\print_jobstatus, samples\basic\print_list, samples\basic\print_test, samples\advanced\pdf_print, samples\advanced\pdf_print_2, samples\advanced\pdf_print_3, samples\advanced\pdf-fillter, samples\advanced\pdfreader, samples\advanced\pdfview, samples\advanced\report_class, samples\advanced\report_generator, samples\advanced\report_generator_2, samples\advanced\report_interpreter

OOHG
pastas samples\do_report, samples\printing, samples\report_form

Harbour
pastas tests, contrib\hbwin\tests, contrib\hbhpdf\tests
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18009
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

estou tentando entender como imprime no hmg

Mensagempor ArnaldoND » 17 Jun 2019 16:38

Trazom, que tipo de relatorio pretende imprimir?
Entendo sua dificuldade.. ha uns meses atras, não tinha noção alguma de hmg,mas depois de algumas cabeçadas, percebi q não era nenhum bicho de sete cabeças...
se for uma listagem simples, veja a estrutura a seguir: (lembre-se, as coordenadas x e y são as posições em milimetros, dentro da folha de impressão.. exemplo, quer imprimir uma linha horizontal no meio da folha A4, orientação landscape, a sintaxe seria: @ 105,000 PRINT LINE TO 105,296 )

* ------------------------------------------------------------
function rel_01P( )

local p_linha := 040
local u_linha := 185
local linha := p_linha
local pagina := 1

SELECT PRINTER DIALOG PREVIEW
START PRINTDOC NAME 'Gerenciador de impressão'
START PRINTPAGE

cabecalho(pagina)

N := 1
QT := LEN( aTable ) // aTable é uma array pre-carregada a partir do resultado de uma query
nReg := 0

while N <= QT

nReg++
@ linha, 010 PRINT aTable[n,1] FONT 'courier new' SIZE 10
// repita aqui a linha, para imprimir todos os detalhes do registro
linha +=4

if linha >= u_linha
rodape()
END PRINTPAGE
START PRINTPAGE
pagina ++
cabecalho(pagina)
linha := p_linha
endif
N++

endif
end

if linha >= u_linha
rodape()
END PRINTPAGE
START PRINTPAGE
pagina ++
cabecalho(pagina)
linha := p_linha
endif
rodape()

END PRINTPAGE
END PRINTDOC

return(nil)
*-------------------------------------------------------------------------------
static function cabecalho(p_pagina)
// imprimir o cabeçalho
return(nil)
*-------------------------------------------------------------------------------
static function rodape()
// imprimir seu rodapé

return(nil)
ArnaldoND
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 23
Data de registro: 23 Jan 2019 15:12
Cidade/Estado: são paulo/sp
Curtiu: 13 vezes
Mens.Curtidas: 0 vez




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro