Página 1 de 1

imprimir variaveis com win32prn()

Enviado: 22 Nov 2009 10:34
por lapinhazzz
Bom Dia amigos do forum

Gostaria de saber como imprimir variaveis de uma base de dados para win32prn()

Gostaria que me enviassem um exemplo que escolhe as impressoras de rede e locais e imprimisse um pequeno relatorio como se fazia no clipper com variaveis
Obrigado

Com os melhores cumprimentos a todos

lapinhazzz

Código: Selecionar todos

*--------------------------------------------------------------------------------------
#define FORM_A4 9
#define RGB( nR,nG,nB ) ( nR + ( nG * 256 ) + ( nB * 256 * 256 ) )
#define PS_SOLID 0
#define BLACK RGB( 0x0 ,0x0 ,0x0 )
#define BLUE RGB( 0x0 ,0x0 ,0x85 )
#define GREEN RGB( 0x0 ,0x85,0x0 )
#define CYAN RGB( 0x0 ,0x85,0x85 )
#define RED RGB( 0x85,0x0 ,0x0 )
#define MAGENTA RGB( 0x85,0x0 ,0x85 )
#define BROWN RGB( 0x85,0x85,0x0 )
#define WHITE RGB( 0xC6,0xC6,0xC6 )
*
*--------------------------------------------------------------------------------------
FUNCTION Main()
   LOCAL nPrn:=1
   LOCAL aPrn:= GetPrinters()
   CLS
   sele 3
   use produtos
   inde on codigoprod to cprod
   c=prod
   IF EMPTY(aPrn)
      Alert("No printers installed - Cannot continue")
      QUIT
   ENDIF
   DO WHILE !EMPTY(nPrn)
      CLS
      @ 0,0 SAY 'Programa de teste Classe WIN32PRN(). Escolha uma impressora. ESC' +;
         ' para sair.'
      @ 1,0 TO maxRow(),maxCol()
      nPrn:= ACHOICE(2,1,maxRow()-1,maxCol()-1,aPrn,.T.,,nPrn)
      IF !EMPTY(nPrn)
         PrnTest(aPrn[nPrn])
      ENDIF
   ENDDO
   *
   @ 22,00 say ""
RETURN(NIL)
*
*--------------------------------------------------------------------------------------
STATIC FUNCTION PrnTest(cPrinter)
   LOCAL oPrinter:= WIN32PRN():New(cPrinter), aFonts, x, nColFixed, nColTTF, ;
      nColCharSet, aForms
   oPrinter:Landscape:= .F.
   oPrinter:FormType := FORM_A4
   oPrinter:Copies := 1
   *
   c_string := "Teste-" + LTRIM(STR(YEAR(DATE()))) + "-" + STRZERO(MONTH(DATE()),2) +;
      "-" + LTRIM(STR(DAY(DATE()))) + "=" + TIME()
   *
   IF !oPrinter:Create()
      Alert("Cannot Create Printer")
   ELSE
      IF !oPrinter:startDoc( c_string )
         Alert("StartDoc() failed")
      ELSE
         nFont := 12
         oPrinter:SetFont('Courier New',12,{1,nFont}, 0, .F., .F.)

         FOR N = 1 TO 2
            oPrinter:NewLine()
         NEXT N
         *
         *-----------------------------------------------------------------------------

         *================================== Busca de informa‡äes =====================

         oPrinter:TextOut("Impressora: " + oPrinter:PrinterName + ' ' +;
            'MaxRow() = '+ltrim(STR(oPrinter:MaxRow(),4)) +;
            ' MaxCol() = '+ltrim(STR(oPrinter:MaxCol(),4)) , .t.)

         oPrinter:NewLine()
         oPrinter:SetFont('Courier New',12,{1,nFont}, 0, .F., .F.)

         oPrinter:Textout(STR(oprinter:LineHeight() ) + " -altura da linha",.t.)
         oPrinter:Textout(STR(oprinter:CharWidth() ) + " -largura da coluna",.T.)
         oPrinter:TextOut(STR(oPrinter:Prow() ) + " -N£mero da linha",.T.)
         oPrinter:TextOut(STR(oPrinter:GetCharWidth() ) + " -GetCharWidth",.T.)
         oPrinter:TextOut(STR(oPrinter:GetCharHeight() ) + " -GetCharHeigth",.T.)
         oPrinter:Textout(STR(oprinter:Prow() ) + " -Posi‡Æo atual da " +;
            "linha",.T.)
/*
Onde:
oPrinter:TextOut("Texto a ser impresso",.T.)
1-Texto;
2-Opcional: Avan‡a linha automaticamente (.T.) ou nÆo (.F.),
sendo (.F.) o seu valor Default, quando suprimido.
*/
         *======================= Aqui come‡a a impressÆo da 1¦ p gina ================

         oPrinter:NewLine()
         FOR nLinha = 1 TO 3
            oPrinter:SetPrc(oPrinter:Prow()+01, nLinha )
            oPrinter:Textout(ALLTRIM(STR(oPrinter:Prow()))+ c +;
               "ola",.f.)
         NEXT nLinha

         oPrinter:TextAtFont(oPrinter:mm_to_posx(105),oPrinter:mm_to_posy(75), +;
            "Imprimindo em negrito centralizado na horizontal","Courier New", +;
            8,,700,,.T.,,,,,2)


            /*
Onde:
1-Imprime a 105mm da margem esquerda;
2-Na linha 2;
3-Texto;
4-Fonte Courier New;
5-Tamanho da fonte, 10;
6-Divisor do tamanho da fonte;
7-O valor 700 indice Bold (negrito) ou (.F.);
8-Controla o sublinhado (.T.) ou (.F.);
9-Controla o it lico (.T.) ou (.F.);
10-nCharSet;
11-Nova linha (.T.) ou nÆo (.F.)
12-Atualiza PosX (.T.) ou nÆo (.F.)
13-Controla a cor de impressÆo;
14-O valor "2" indica impressÆo centralizada, "0" o texto seria
impresso … esquerda da posi‡Æo 105mm, e "1" o texto estaria …
direita do ponto 105 mm.
*/
         *======================= Aqui come‡a a impressÆo da 2¦ p gina ================

         oPrinter:NewPage()
         oPrinter:NewLine()
      endi
   endif


Re: imprimir variaveis com win32prn()

Enviado: 23 Nov 2009 10:35
por gvc
Gostaria de saber como imprimir variaveis de uma base de dados para win32prn()
Vc já tem isso no seu poste:

oPrinter:Textout(<variável>,.t.)
oPrinter:Textout(<campo>,.t.)
Gostaria que me enviassem um exemplo que escolhe as impressoras de rede e locais e imprimisse um pequeno relatorio como se fazia no clipper com variaveis
Por favor, explique melhor o que vc quer fazer.

Re: imprimir variaveis com win32prn()

Enviado: 23 Nov 2009 10:54
por lapinhazzz
Bom dia amigo
O Problema é que quanto ponho as variáveis na impressão com o pdfcreator 0.7.1 o que acontece é que não aparece as variaveis que eu puz no textout.

Como resolvo isto

Obrigado

Cumprimentos

Lapinhazzz

Re: imprimir variaveis com win32prn()

Enviado: 23 Nov 2009 16:22
por Hasse
Boa tarde.

Dê uma olhada no tópico abaixo:

https://pctoledo.org/forum/viewto ... tes#p54198

Alí tem tudo que você está necessitando e muito mais. Lembrando que a funçao :TextOut() da Classe Win32prn só imprime texto, portanto os valores numéricos precisam ser transformados antes em string.

Se houver dúvidas, exponha.

Re: imprimir variaveis com win32prn()

Enviado: 26 Nov 2009 16:05
por lapinhazzz
Boa Noite
Amigos do Forum

Dei uma olhadela no link e tenho o pdfcreator 0.7.1 para imprimir.
Para o pdfcreator não pedir para gravar em PDF mas abrir logo o pdf (preview) como faço?

Obrigado.

Cumprimentos,


lapinhazzz

Re: imprimir variaveis com win32prn()

Enviado: 26 Nov 2009 18:20
por Hasse
Basta configurar o PDFCreator que ele envia direto para o AcrobatReader.

Não me lembro mais como faz isto no 0.7.1 pois agora uso o 0.9.6 . Este último é mais rápido, mas para caracteres especiais o 0.7.1 é mais fiel.

Mas, pelo que me lembro, durante a instalação a configuração padrão é para abrir direot no Acrobat. Porém para verificar, vá em Iniciar / Programas / PDFCreator. Ali aparecem as opções.

Se não der certo, desinstale, e re-inicie o computador. Instale novamente.

OBS: O AcrobatReader está instalado ?

Re: imprimir variaveis com win32prn()

Enviado: 27 Nov 2009 15:28
por PAULO S
Caro Lapinhazzz,

Abra o PDFCreator e no Monitor de Impressão, configure a opção de salvamento automático.
Configure as opções como formato do arquivo, nome, pasta para salvamento e principalmente, neste caso, marque a opção que determina a abertura autonática do documento após o salvamento.
Pronto está resolvido. Utilizo desta forma e funciona OK.

Abraços.

Re: imprimir variaveis com win32prn()

Enviado: 01 Dez 2009 12:51
por lapinhazzz
Boa Tarde Amigos do Forum

Amigo Paulo S.

Abri o pdfcreator 0.7.1 e ele bloqueia-me.
Não sei porquê

Se tem algum truque me diga porque só com esse pdfcreator é que consigo imprimir bmps com o win32prn()

Obrigado


lapinhazzz

Re: imprimir variaveis com win32prn()

Enviado: 01 Dez 2009 17:04
por PAULO S
Caro Lapinhazzz,

Desculpe, mas como o Hasse, uso outra versão do PDFCreator, a 0.9.5.
Abraços.

Re: imprimir variaveis com win32prn()

Enviado: 01 Dez 2009 20:00
por Hasse
Explique o que é este "bloqueia".
Ele não permite alterações na configuração ?
Você instalou ele disponível para todos ?
Você está no Administrador ?

Ajude-nos com detalhes e poderemos te ajudar mais facilmente.