Página 1 de 1
função SetFont
Enviado: 26 Out 2012 01:49
por cjp
Meus amigos,
Alguém sabe me explicar como usar a função SetFont?
Achei o seguinte no site Harbour Online Help:
Código: Selecionar todos
Wvt_SetFont( cFontName, nSize, nWidth, nWeight, nQuality )
FUNCTION Wvt_SetFont( cFontName, nSize, nWidth, nWeight, nQuality )
DEFAULT cFontName TO Hb_GtInfo( HB_GTI_FONTNAME )
DEFAULT nWidth TO Hb_GtInfo( HB_GTI_FONTWIDTH )
DEFAULT nWeight TO Hb_GtInfo( HB_GTI_FONTWEIGHT )
DEFAULT nQuality TO Hb_GtInfo( HB_GTI_FONTQUALITY )
DEFAULT nSize TO Hb_GtInfo( HB_GTI_FONTSIZE )
RETURN Hb_GtInfo( HB_GTI_SETFONT, { cFontName, nSize, nWidth, nWeight, nQuality } )
Estou tentando usar assim:
Ou assim:
Ou assim:
Ou de várias formas parecidas, mas sempre retorna -2. No site não indica o que significa -2, mas o fato é que não estou conseguindo o que quero: aumentar o tamanho da fonte na impressão.
Alguém me ajuda?
Inacio
função SetFont
Enviado: 26 Out 2012 07:51
por Toledo
Inacio, você quer usar esta configuração de fonte no vídeo ou em relatórios?
Abraços,
função SetFont
Enviado: 26 Out 2012 20:43
por cjp
Em relatórios para impressão, meu caro!!!
função SetFont
Enviado: 27 Out 2012 10:50
por Toledo
Ok, então neste caso a função Wvt_SetFont() não vai lhe servir e nos exemplos que você passou usando SetFont() você tem que colocar o objeto criado na classe de impressão (Win_prn() ou Win32Prn()).
Por exemplo:
Abraços,
função SetFont
Enviado: 27 Out 2012 17:44
por cjp
Mas é justamente isto que estou fazendo. Veja como está minha função:
Código: Selecionar todos
FUNCTION Implist8
oPrn := Win_Prn():new( aPNomes[nPrn] )
oPrn:SetFont('Times New',20,{1,12}, 0,.F.,.F.)
If !oPrn :Create()
Hb_alert("Nao foi criado o documento de Impressao")
Return nil
ElseIf !oPrn :StartDoc("Imprimindo Documento")
Hb_alert("Erro na Impressora")
Return nil
EndIf
nPrn=1
nrpg=1
oPrn :NewLine()
While &cCriterio. .And. !Eof()
nPrn++
oPrn :NewLine()
oPrn :TextOut(&cInicio. )
if !empty(&cCampos)
oPrn :NewLine()
if at(" ",&cCampos)=1
oPrn :TextOut(" "+&cCampos. )
else
oPrn :TextOut(" "+&cCampos. )
endif
endif
if !empty(&cFinal)
oPrn :NewLine()
if at(" ",&cFinal)=1
oPrn :TextOut(" "+&cFinal. )
else
oPrn :TextOut(" "+&cFinal. )
endif
endif
If nPrn>29
nPrn=0
oPrn :NewLine()
oPrn :TextOut(" Página "+alltrim(str(nrpg)))
oPrn :NewLine()
nrpg++
oPrn :NewPage()
Endi
Skip
Endd
oPrn :EndDoc()
oPrn :Destroy()
Return Nil
Será que tem algo errado?
função SetFont
Enviado: 27 Out 2012 23:47
por Toledo
Inacio, tenta fazer o seguinte:
- Mova a linha 3 do seu código para a linha 12.
- Retire o espaço que existe entre o objeto e a função, por exemplo oPrn :Create() ficaria assim oPrn:Create(). Faça o mesmo com as demais funções.
Abraços,
função SetFont
Enviado: 28 Out 2012 00:52
por cjp
Perfeito, meu caro. Deu certo. Muito obrigado.
Aproveitando: vc sabe como fazer para imprimir em negrito, sublinhado, ou com outros caracteres especiais nesta mesma função?
função SetFont
Enviado: 28 Out 2012 09:36
por Jairo Maia
Olá Inácio,
Veja os parâmetros da função :SetFont():
Código: Selecionar todos
oPrn:setFont(<cFontName>,<nPointSize>,<nFontWidth>,<nFontWeight>,<lUnderline>,<lItalic>,<nCharSet>)
Veja que o parâmetro 5 se for .T. imprime
Underline, e o parâmetro 6 se for .T. imprime
Itálico
Acho que este exemplo pode também ajudar:
c:\hb32\contrib\hbwin\tests\testprn.prg. Você pode compilar este exemplo assim:
hbmk2 testprn -lhbwin e ver o resultado de acordo com a impressora que usar.
Destaco uma nota constante neste exemplo sobre Underline. Veja:
Notice: escreveu:UNDERLINE only prints correctly if there is a blank line after it. This is because of :LineHeight and the next line printing over top of the underline. To avoid this happening you can to alter :LineHeight or use a smaller font, or use :SetBkMode(WIN_TRANSPARENT)
função SetFont
Enviado: 30 Out 2012 00:58
por cjp
Funcionou perfeitamente, meu caro. Muito obrigado.
função SetFont
Enviado: 01 Fev 2016 12:04
por cjp
Novamente eu venho pedir ajuda aos colegas nesta questão. É apenas uma questão simples: como faço para imprimir centralizado na página?
Tenho usado assim:
Mas isto tem um problema: quando o texto a ser impresso é sublinhado, ele sublinha também o espaço anterior. Existe alguma forma de centralizar efetivamente?
função SetFont
Enviado: 01 Fev 2016 19:52
por Toledo
Amigo, veja este tópico:
win_prn Centralizar texto
Abraços,
função SetFont
Enviado: 05 Abr 2017 10:22
por JCBarbosa
Olá Pessoal, sou novato no harbour e estou fazendo um cupom não fiscal para um cliente
1 - sai certo porem claro e letra pequena (cupom2) oPrinter:SetFont( 'Courier New', 6.5, 0 ) // CUPOM2
2 - sai desalinhado (cupom) oPrinter:SetFont( 'Times-Roman', 7, 0 ) // CUPOM
eu teria que usar o setpos()... como usar nos valores....
Function ImpCo9()
local oPrinter,linha,desenho,n_x
local cFileName, oWin32Bmp,nome_impressora,xcopia
DMPAPER_A4:=80;zpz:=1
nome_impressora := GetDefaultPrinter()
// Create printer object and configure print job
oPrinter := Win32Prn():new( nome_impressora )
oPrinter:landscape := .f.
oPrinter:formType := DMPAPER_A4
oPrinter:copies := 1
// Create device context
IF .NOT. oPrinter:create()
Alert( "Cannot create device context" )
QUIT
ENDIF
// Create print job
if ! oPrinter:startdoc( "Emissão de Pedido" ) // nome do arquivo para impressao
Alert( "Cannot create document" )
QUIT
ENDIF
linha := 1;corta:=chr(27)+chr(119)
desenho := 320
oPrinter:newline()
oPrinter:setfont('GungsuhChe',12,0)
oPrinter:setprc( oPrinter:Prow() , Pcol() + 7 )
oPrinter:textout( wfanta )
oPrinter:newline()
oPrinter:newline()
oPrinter:newline()
oPrinter:setfont('1FontB11',6,{1,22},0 ,.F.,.F.)
oPrinter:textout( 'Venda..: '+strzero(wnota,6)+' Emissao: '+dtoc(wemissao) )
oPrinter:newline()
sele cliente
seek wcliente
wcli:=if(zpz=0,'Cliente: '+trim(wnomecli)+' - CPF: '+transform(cliente->CGC,'@R 999.999.999-99'),'Cliente: * * * Consumidor * * * ')
oPrinter:textout( wcli )
oPrinter:NewLine()
//Printer:SetFont( 'Courier New', 6.5, 0 ) // CUPOM2
oPrinter:SetFont( 'Times-Roman', 7, 0 ) // CUPOM
oPrinter:TextOut( REPL( '-', 80 ) )
oPrinter:NewLine()
oPrinter:TextOut( ' QTDE D E S C R I C A O C.UNIT. C.TOTAL' )
oPrinter:NewLine()
oPrinter:TextOut( REPL( '-', 80 ) )
sele movime
seek wnota
do while NOTA = wnota
witem:= SAIDA * PRECO
sele produtos
seek movime->CODIGO
wpro:= left(trim(DESCRI)+repli('.',35),33)
sele movime
wlin:=str(SAIDA,4,1)+' '+wpro+' '+transform(PRECO,'@E 999.99')+spac(4)+transform(witem,'@E 9999.99')
oPrinter:newline()
oPrinter:TextOut( wlin )
skip
enddo
oPrinter:newline()
oPrinter:TextOut( REPL( '-', 83 ) )
oPrinter:CharSet( 0 ) //Reset default charset
oPrinter:Bold( WIN_FW_EXTRABOLD )
wlin:=spac(68)+'Total Geral.: '+transform(wvalor,'@E 9,999.99')
oPrinter:newline()
oPrinter:TextOut( wlin )
oPrinter:Bold( WIN_FW_DONTCARE )
oPrinter:newline()
oPrinter:TextOut( REPL( '-', 83 ) )
oPrinter:newline()
oPrinter:TextOut( '------------------------------ Volte Sempre -----------------------------' )
oPrinter:newLine()
oPrinter:TextOut("chr(27)+chr(119)")
oPrinter:endDoc()
oPrinter:destroy()
retu
no aguardo e agradeço
J.Carlos Barbosa