função SetFont

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

Moderador: Moderadores

cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

função SetFont

Mensagem 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:

Código: Selecionar todos

SetFont('Times New',20,{1,12}, 0,.F.,.F.)
Ou assim:

Código: Selecionar todos

SetFont('Times New',20,12, 0,.F.,.F.)
Ou assim:

Código: Selecionar todos

SetFont('Courier New',12,{1,12}, 0,.F.,.F.)
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
Inacio de Carvalho Neto
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

função SetFont

Mensagem por Toledo »

Inacio, você quer usar esta configuração de fonte no vídeo ou em relatórios?

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

função SetFont

Mensagem por cjp »

Em relatórios para impressão, meu caro!!!
Inacio de Carvalho Neto
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

função SetFont

Mensagem 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:

Código: Selecionar todos

oPrinter:SetFont('Times New',20,{1,12}, 0,.F.,.F.)
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

função SetFont

Mensagem 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?
Inacio de Carvalho Neto
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

função SetFont

Mensagem 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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

função SetFont

Mensagem 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?
Inacio de Carvalho Neto
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

função SetFont

Mensagem 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)
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

função SetFont

Mensagem por cjp »

Funcionou perfeitamente, meu caro. Muito obrigado.
Inacio de Carvalho Neto
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

função SetFont

Mensagem 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:

Código: Selecionar todos

oPrn:TextOut("                                    Teste")
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?
Inacio de Carvalho Neto
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

função SetFont

Mensagem por Toledo »

Amigo, veja este tópico:

win_prn Centralizar texto

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
JCBarbosa
Usuário Nível 1
Usuário Nível 1
Mensagens: 10
Registrado em: 19 Mar 2014 15:12
Localização: Americana/SP

função SetFont

Mensagem 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
Anexos
cupom2.PNG
cupom.PNG
Responder