Página 1 de 1
imprimir relatorio passando tipoImpressao como parametro
Enviado: 11 Jan 2016 15:40
por porter
ola pessoal, o comando abaixo imprime corretamente.
Código: Selecionar todos
oPrinter:SetFont( "Lucida Console", 10,{3,-60},FW_BOLD,.F.,.F. )
Agora, estou tentando imprimir passando esse tipo de impressão como parâmetro, estou fazendo dessa forma mas não esta surtindo efeito:
Código: Selecionar todos
tipoImpressao = ' "Lucida Console", 10,{3,-60},FW_BOLD,.F.,.F. '
oPrinter:SetFont( tipoImpressao )
Eu quero passar o tipo de impressão como parâmetro, porque dependendo do lugar o mesmo relatório tem que ser comprimido e dependendo o lugar o mesmo relatório tem que ser caracteres normais, então por isso vou cadastrar o tipo de impressão e passa-lo como parâmetro, tem como ?
xHarbour.
imprimir relatorio passando tipoImpressao como parametro
Enviado: 11 Jan 2016 17:02
por Jairo Maia
Olá Porter,
Nunca usei dessa forma, mas vou dar um palpite: Tente passar como macro, veja se funciona:
Código: Selecionar todos
tipoImpressao := ' "Lucida Console", 10,{3,-60},FW_BOLD,.F.,.F. '
oPrinter:SetFont( &tipoImpressao. )
Nota: Para passar como Macro a variável tipoImpressao não pode ser Local. Se for, para testar mude para Private.
imprimir relatorio passando tipoImpressao como parametro
Enviado: 11 Jan 2016 17:32
por porter
esta compilando, mas da erro de sintaxe na execução, tentei assim:
Código: Selecionar todos
Private tipoImpressao := ' "Lucida Console", 10,{3,-60},FW_BOLD,.F.,.F. '
oPrinter:SetFont( &tipoImpressao. )
tentei tambem sem o ponto(.)
Código: Selecionar todos
Private tipoImpressao := ' "Lucida Console", 10,{3,-60},FW_BOLD,.F.,.F. '
oPrinter:SetFont( &tipoImpressao )
imprimir relatorio passando tipoImpressao como parametro
Enviado: 11 Jan 2016 19:19
por JoséQuintas
Isso não é um valor, é uma lista de valores.
Código: Selecionar todos
oFont := { "Lucida Console", 10,{3,-60},FW_BOLD,.F.,.F. }
...
oPrinter:SetFont( oFont[1], oFont[2], oFont[3], oFont[4],oFont[5],oFont[6] )
imprimir relatorio passando tipoImpressao como parametro
Enviado: 11 Jan 2016 22:18
por asimoes
Porter,
Fiz um teste aqui e funcionou assim:
tipoImpressao = ' "Lucida Console", 10,{3,-60},FW_BOLD,.F.,.F. '
oPrinter:SetFont( ( tipoImpressao ))
imprimir relatorio passando tipoImpressao como parametro
Enviado: 11 Jan 2016 22:24
por asimoes
Porter,
Você tem que ver o que esá fazendo, fiz um teste usando macro e funcionou veja:
Código: Selecionar todos
oPrn := win_prn():New(WIN_PrinterGetDefault())
oPrn :LandScape := .F.
oPrn :FormType := WIN_DMPAPER_A4//LETTER//A4
oPrn :Copies := 1
//oPrn:AskProperties := .T.
if !oPrn:Create()
hwg_MsgStop("Não foi criado documento.","Erro")
Return Nil
EndIf
if !oPrn:StartDoc("teste")
hwg_MsgStop("Erro na Impressora.","Erro")
Return Nil
EndIf
oPrn:SetColor( HB_WIN_RGB_BLACK )
tipoImpressao := '"Lucida Console", 8, { 3, -51 }'
oPrn:SetFont( &tipoImpressao. )
__nColFixed:= 3 * oPrn:CharWidth
oPrn:SetPrc(2, 0)
oPrn:SetPos( __nColFixed )
oPrn:Textout( "TESTE", .T. )
oPrn:EndDoc()
imprimir relatorio passando tipoImpressao como parametro
Enviado: 11 Jan 2016 22:35
por asimoes
Porter,
Dessa forma que eu te passei pode até não dar erro, mas a fonte não vai configurar.
oPrinter:SetFont( ( tipoImpressao ))
Veja o meu post anterior.
imprimir relatorio passando tipoImpressao como parametro
Enviado: 12 Jan 2016 13:41
por porter
Nesse exemplo que Jose Quintas passou, onde está "Lucida Console", 10,{3,-60},FW_BOLD,.F.,.F. eu quero passar um parametro seria uma variavel no lugar desse comando contendo esse comando, obrigado.
oFont := { "Lucida Console", 10,{3,-60},FW_BOLD,.F.,.F. }
...
oPrinter:SetFont( oFont[1], oFont[2], oFont[3], oFont[4],oFont[5],oFont[6] )
xHarbour
imprimir relatorio passando tipoImpressao como parametro
Enviado: 12 Jan 2016 14:37
por alxsts
Olá!
Código: Selecionar todos
FUNCTION Main()
//
// comandos...
//
Imprimir( { "Lucida Console", 10,{3,-60},FW_BOLD,.F.,.F. } )
RETURN NIL
//---------------------------------------------------------------
FUNCTION Imprimir( aFontCfg )
LOCAL oPrinter
//
// comandos...
//
oPrinter:SetFont( aFontCfg[1], aFontCfg[2], aFontCfg[3], aFontCfg[4], aFontCfg[5], aFontCfg[6] )
//
// comandos...
//
RETURN NIL
//---------------------------------------------------------------
imprimir relatorio passando tipoImpressao como parametro
Enviado: 12 Jan 2016 16:12
por JoséQuintas
Pequena correção:
Isso não é um comando, é um array.
array é uma variável que contém uma lista de valores
Não sei se está na dúvida de como usar uma variável dentro da lista:
Código: Selecionar todos
cNomeFonte := "Lucida Console"
oFont := { cNomeFonte, 10,{3,-60},FW_BOLD,.F.,.F. }
Sendo uma lista, dá pra pegar qualquer dos valores, ou passar a variável com a lista inteira pra função.
Ou sem criar o Font, direto como no exemplo do post anterior, só incluindo na lista a variável com o nome do fonte
imprimir relatorio passando tipoImpressao como parametro
Enviado: 12 Jan 2016 17:30
por Jairo Maia
Olá Pessoal,
Em Harbour, apesar de ter sido mero palpite (pois nunca usei assim), da forma que foi colocado
neste post e confirmado
neste post do Alexandre, isso funciona:
Código: Selecionar todos
tipoImpressao := '"Lucida Console", 8, { 3, -51 }'
oPrn:SetFont( &tipoImpressao. )
Apenas a diferença é que o autor do tópico usa xHarbour. Começo a notar diferenças significativas, embora saiba que Harbour não tem obrigação de manter compatibilidade com xHarbour.
imprimir relatorio passando tipoImpressao como parametro
Enviado: 12 Jan 2016 18:09
por JoséQuintas
Essa é nova pra mim.
Código: Selecionar todos
PROCEDURE Main
LOCAL oVar
oVar := '"Lucida",5,5'
Teste( &oVar )
RETURN
FUNCTION teste( x, b, c )
LOCAL oElement
? ValType( x )
? ValType( b )
? ValType( c )
? Len( x )
FOR EACH oElement IN x
? oElement
NEXT
? b
? c
RETURN NIL
Resultado
Aceitou macro encima de lista.
Harbour 3.4
imprimir relatorio passando tipoImpressao como parametro
Enviado: 12 Jan 2016 18:59
por alxsts
Olá!
No site do
Alexander Kresin tem explicações sobre a expansão das possibilidades de utilização de macros e code-blocks. As melhorias sobre code-block, que é um tipo de dado, podem ser acrescentadas ao tópico
Tutorial de codeblock, se assim o desejar o autor do mesmo.
Nunca gostei de macros pois seu uso aumenta o tamanho do executável e o torna mais lento, pelo menos nos tempos de Clipper. Mas, as melhorias de code-block em Harbour ficaram muito bacanas, como mostrado abaixo:
Código: Selecionar todos
Function Main
Local b1, b2
b1 := Fnc1( Seconds() )
? Eval( b1 )
? "Press any key"
inkey(0)
b2 := Fnc1( Seconds() )
? Eval( b2 )
? "Press any key"
inkey(0)
? Eval( b1,Seconds() )
? "Press any key"
inkey(0)
? Eval( b1 )
?
Return Nil
Function Fnc1( nSec )
Local bCode := {|p1|
Local tmp := nSec
IF p1 != Nil
nSec := p1
ENDIF
Return tmp
}
Return bCode
Perdoem desviar um pouco do assunto do tópico mas creio que valha a pena.