como alterar LPT_TIMEOUT do windows 7

Seção onde você poderá tirar suas dúvidas sobre Sistemas Operacionais. (Windows, Linux...)

Moderador: Moderadores

Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

como alterar LPT_TIMEOUT do windows 7

Mensagem por Jairo Maia »

Olá Porter,

1 - Primeiro, você altera a função que pergunta ao usuário se quer imprimir apenas assim:

Código: Selecionar todos

#include "WinGdi.ch"

Function Main()

 IF CONFIRMA("Imprimir relatorio?") = 1

  W32PRN() // se sim, chama a função W32PRN()

 ENDIF

RETURN
Coloque então a função W32PRN() em seu sistema:

Código: Selecionar todos

Function W32PRN()
 Local cPrinter, oPrinter, nLinha, nMaxLinha
 Local nNumeroPg := 0
 Local cTitulo := "Coloque aqui o nome do Relatorio"

 cPrinter := PegaPrinter()  // escolhe a impressora

 If !Empty( cPrinter )

  oPrinter           := Win32Prn():new( cPrinter )
  oPrinter:landscape := .F.
  oPrinter:formType  := DMPAPER_A4  // folha A4
  oPrinter:copies    := 1  // numero de copias
 
  IF .NOT. oPrinter:create()
   Alert("Erro Tentando Acessar a Impressora")
   Return Nil
  ENDIF

  IF .NOT. oPrinter:startDoc( "Impressao de Relatorio" )
   Alert("Erro Tentando Enviar os Dados de Impressao")
   Return Nil
  ENDIF

  // impressao comprimida: { 3, -50 } ‚ igual 50/3, ou seja 16.6 cpp
  // oPrinter:SetFont( "Lucida Console", 10, { 3, -50 } )

  // impressao normal
  oPrinter:SetFont( "Lucida Console", 10 )
  oPrinter:CharSet( 0 )

  oPrinter:bold( FW_NORMAL )  // nao negrito, nao italico, etc...

  nMaxLinha := oPrinter:MaxRow()  // pega numero maximo de linhas na pagina
  nPosiCenter := ( oPrinter:MaxCol() / 2 )  // pega o meio da pagina

  USE PRODUTOS SHARED NEW  // abre seu arquivo
  GOTO TOP                 // vai para inicio

  DO WHILE !EOF()

   nLinha := oPrinter:PRow()  // pega linha atual de impressao

   If nLinha = 0
    oPrinter:newLine()
    oPrinter:SetPrc( oPrinter:PRow(), nPosiCenter + ( Len( cTitulo ) / 2 ) )
    oPrinter:textOut( cTitulo, .T., Nil, 2 )  // imprime o titulo do relatorio
    oPrinter:newLine()
   EndIf

   oPrinter:textOut( CODIGO, .T. )  // imprime e passa para proxima linha
   oPrinter:textOut( DESCRICAO, .T. )
   oPrinter:newLine()  // aqui, pula uma linha apos a descricao

   If ( ( nMaxLinha - nLinha ) <= 6 )
    nNumeroPg++  // incrementa pagina
    oPrinter:SetPrc( nMaxLinha - 2, nPosiCenter + 4 )
    oPrinter:textOut( "Pagina: " + LTrim( Str( nNumeroPg ) ), Nil, Nil, 2 )
    oPrinter:NewPage()

    /*
      coloquei esta opcao apenas para voce testar a funcao
      para enviar ao cliente voce pode retirar
    */
    If Alert( "Imprimir a Pagina " + Ltrim( Str( nNumeroPg + 1 )), { "Sim","Nao" }) != 1
     Exit
    EndIf

   EndIf

   Skip

  ENDDO

  oPrinter:EndDoc()   // envia a impressora
  oPrinter:Destroy()  // fecha documento de impressao

 EndIf

Return Nil
Veja se vai funcionar como você espera.
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)
Responder