estou tentando entender como imprime no hmg

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
Trazom
Usuário Nível 3
Usuário Nível 3
Mensagens: 277
Registrado em: 14 Ago 2003 01:01
Localização: Maceió/AL

estou tentando entender como imprime no hmg

Mensagem por Trazom »

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 do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

estou tentando entender como imprime no hmg

Mensagem por rubens »

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 279 vezes
link da função
https://pctoledo.org/forum/viewto ... aw#p114739

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

estou tentando entender como imprime no hmg

Mensagem por JoséQuintas »

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
ArnaldoND
Usuário Nível 1
Usuário Nível 1
Mensagens: 23
Registrado em: 23 Jan 2019 16:12
Localização: são paulo/sp

estou tentando entender como imprime no hmg

Mensagem por ArnaldoND »

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)
Responder