FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Clase TDirectPrint
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Clase TDirectPrint
Posted: Mon Feb 11, 2013 05:00 PM

Que ocurri贸 finalmente con ese trabajo de William ? Alguien tiene copia ? William, a煤n lo proporcionas ?

Me uno al comentario que en su dia hizo Rafa, pero por encima de todo esta el respetar las decisiones de cada uno, y agradecerle a William por esta y por tantas contribuciones tan valiosas que nos ha hecho a todos :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Clase TDirectPrint
Posted: Wed Feb 13, 2013 11:43 AM

Muy suave, William dijo que me iba a enviar una muestra. Esperando ansiosamente.

Saludos.

Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1076
Joined: Fri Oct 07, 2005 10:41 PM
Re: Clase TDirectPrint
Posted: Mon Feb 18, 2013 02:30 PM
Antonio Linares wrote:Que ocurri贸 finalmente con ese trabajo de William ? Alguien tiene copia ? William, a煤n lo proporcionas ?

Me uno al comentario que en su dia hizo Rafa, pero por encima de todo esta el respetar las decisiones de cada uno, y agradecerle a William por esta y por tantas contribuciones tan valiosas que nos ha hecho a todos :-)


Antonio,

Hace una semana te he enviado correo, confirma de recibido por favor...
William, Morales

Saludos



m茅xico.sureste
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Re: Clase TDirectPrint
Posted: Tue Feb 19, 2013 11:03 AM

Willian,

Por favor pode me enviar tambem: ubiratan@sgsistemas.com.br

ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles麓C
TDolphin
Posts: 1078
Joined: Thu Sep 27, 2007 03:47 PM
Re: Clase TDirectPrint
Posted: Tue Feb 19, 2013 01:58 PM

Willian ,

Saludos

Me podrias proporcionar un ejemplo de como se usa esta libreria , ya que no veo documentacion.

Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Clase TDirectPrint
Posted: Tue Feb 19, 2013 04:44 PM

William,

No la he recibido. Si me envias un zip, por favor renombralo como zop 贸 similar, gracias

Vendes el c贸digo de esta clase ? Alguna raz贸n por la que no quieras compartir aqui su c贸digo ? gracias

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Clase TDirectPrint
Posted: Wed Feb 20, 2013 04:14 PM
Aqui esta la Clase TDirectPrint de William. Ha sido muy amable en proporcionarmela con la expresa autorizaci贸n para publicarla. Gracias William! :-)

http://code.google.com/p/fivewin-contributions/downloads/detail?name=wtraw.prg&can=2&q=

wtraw.prg
Code (fw): Select all Collapse
/*
//
// 聽Fecha 聽 聽 聽 聽 聽: 22 de enero del 2010
// 聽Autor 聽 聽 聽 聽 聽: William Morales
// 聽M贸dulo 聽 聽 聽 聽 : Clase para imprimir documentos directos a la impresora de windows
// 聽Nombre 聽 聽 聽 聽 : wtraw.prg
//
*/

#include <fivewin.ch>

#xcommand @ <nRow>, <nCol> SAYDOS <Text> => ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽DevPos( <nRow>,<nCol>); DevOut(<Text>)

CLASS TDirectPrint
聽 聽DATA cIncos 聽 聽 聽 聽AS CHARACTER 聽 聽 聽 INIT "TDirectPrint v 0.1"
聽 聽DATA cBuild 聽 聽 聽 聽AS CHARACTER 聽 聽 聽 INIT "20100122"
聽 聽DATA cCredits 聽 聽 聽AS CHARACTER 聽 聽 聽 INIT "Autor: William Morales" + CRLF + ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "wmormar@hotmail.com" + CRLF + CRLF + ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "Tester: " + CRLF + ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 " 聽 Willi Quintana" + CRLF + ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 " 聽 Oscar Chacon (costa rica)"
聽 聽DATA cMsg 聽 聽 聽 聽 聽AS CHARACTER 聽 聽 聽 INIT ""
聽 聽DATA cFile 聽 聽 聽 聽 AS CHARACTER 聽 聽 聽 INIT ""
聽 聽DATA cContent 聽 聽 聽AS CHARACTER 聽 聽 聽 INIT ""
聽 聽DATA cPrinter 聽 聽 聽AS CHARACTER 聽 聽 聽 INIT GetDefaultPrinter()
聽 聽DATA cDocument 聽 聽 AS CHARACTER 聽 聽 聽 INIT "Imprimiendo documento : Powered by INCOS"
聽 聽DATA cLogo 聽 聽 聽 聽 AS CHARACTER 聽 聽 聽 INIT ""

聽 聽DATA nRow 聽 聽 聽 聽 聽AS NUMERIC 聽 聽 聽 聽 INIT 0
聽 聽DATA nCol 聽 聽 聽 聽 聽AS NUMERIC 聽 聽 聽 聽 INIT 0
聽 聽DATA nCopy 聽 聽 聽 聽 AS NUMERIC 聽 聽 聽 聽 INIT 1
聽 聽DATA nHeight 聽 聽 聽 AS NUMERIC 聽 聽 聽 聽 INIT 20
聽 聽DATA nWidth 聽 聽 聽 聽AS NUMERIC 聽 聽 聽 聽 INIT 35

聽 聽DATA lDo 聽 聽 聽 聽 聽 AS LOGICAL 聽 聽 聽 聽 INIT .f.

聽 聽METHOD new( cPrinter ) CONSTRUCTOR
聽 聽METHOD printerdefault() 聽 聽 聽 聽 聽 聽 聽 INLINE ::cPrinter := GetDefaultPrinter()
聽 聽METHOD setlpt( nPort )
聽 聽METHOD jump( nJump )
聽 聽METHOD esc( cText )
聽 聽METHOD say( nRow, nCol, cText )
聽 聽METHOD opencash( cPrinter, nCash )
聽 聽METHOD sendtoprinter()
聽 聽METHOD checkport( nPort ) 聽 聽 聽 聽 聽 聽 INLINE PrintReady( nPort )
聽 聽METHOD eject() 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽INLINE ::esc( Chr(12) )

聽 聽METHOD beginprint() 聽 聽 聽 聽 聽 聽 聽 聽 聽 INLINE (::esc( Chr(27) + Chr(64) ), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽::esc( Chr(27) + Chr(120), Chr( 0 ) ) ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 )
聽 聽METHOD endprint() 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 INLINE (::esc( Chr(27) + Chr(18) ), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽::esc( Chr(27) + Chr(50) ), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽::esc( Chr(27) + Chr(72) ), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽::esc( Chr(27) + Chr(80) ) 聽;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 )
聽 聽METHOD bold( lOnOff ) 聽 聽 聽 聽 聽 聽 聽 聽 INLINE IF( lOnOff, ::esc( Chr(27) + Chr(71) ), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ::esc( Chr(27) + Chr(72) ) 聽;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 )
聽 聽METHOD condensed() 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽INLINE ::esc( Chr(27) + Chr(15) )
聽 聽METHOD normal() 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 INLINE ::esc( Chr(27) + Chr(18) )
聽 聽METHOD expansive( lOnOff ) 聽 聽 聽 聽 聽 聽INLINE IF( lOnOff, ::esc( Chr(27) + Chr(14) ), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ::esc( Chr(27) + Chr(20) ) 聽;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 )
聽 聽METHOD superscript( lOnOff ) 聽 聽 聽 聽 聽INLINE IF( lOnOff, ::esc( Chr(27) + Chr(83) + Chr(48) ), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ::esc( Chr(27) + Chr(84) ) 聽;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 )
聽 聽METHOD subscript( lOnOff ) 聽 聽 聽 聽 聽 聽INLINE IF( lOnOff, ::esc( Chr(27) + Chr(83) + Chr(49) ), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ::esc( Chr(27) + Chr(84) ) 聽;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 )
聽 聽METHOD underline( lOnOff ) 聽 聽 聽 聽 聽 聽INLINE IF( lOnOff, ::esc( Chr(27) + Chr(45) + Chr(49) ), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ::esc( Chr(27) + Chr(45) + Chr(40) ) 聽;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 )
聽 聽METHOD prnfile( cFile )
聽 聽METHOD logo( cFile, nHeight, nWidth ) INLINE (::cLogo := cFile, ::nHeight := nHeight, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽::nWidth := nWidth )
聽 聽METHOD printlogo()

ENDCLASS

/**************************************************************************************/
METHOD new( cPrinter )
聽 聽LOCAL nFile := 1

聽 聽DEFAULT cPrinter := GetDefaultPrinter()

聽 聽::cPrinter := cPrinter
聽 聽::lDo 聽 聽 聽:= .t.
聽 聽::cMsg 聽 聽 := ::cIncos + " - " + ::cBuild
聽 聽::cContent := ""
聽 聽::nCol 聽 聽 := 0
聽 聽::nRow 聽 聽 := 0

聽 聽WHILE .t.
聽 聽 聽 ::cFile := "wmprn" + PadL( nFile++, 3, "0" ) + ".gcj"
聽 聽 聽 IF !File( ::cFile )
聽 聽 聽 聽 聽EXIT
聽 聽 聽 ENDIF
聽 聽 聽 sysrefresh()
聽 聽ENDDO

聽 聽SET PRINTER TO (::cFile)
聽 聽SET DEVICE TO PRINT

聽 聽RETURN Self

/**************************************************************************************/
METHOD setlpt( nPort )
聽 聽LOCAL cPort := ""

聽 聽DEFAULT nPort := 1

聽 聽::lDo := .t.
聽 聽cPort := PrinterPortToName( "LPT" + WCStr(nPort) + ":" )
聽 聽IF Empty( cPort )
聽 聽 聽 MSGINFO( "No hay impresora en el puerto seleccionado...", ::cMsg )
聽 聽 聽 ::lDo := .f.
聽 聽 聽 RETURN NIL
聽 聽ENDIF

聽 聽::cPrinter := cPort

聽 聽RETURN NIL

/**************************************************************************************/
METHOD jump( nJump )
聽 聽LOCAL x := 0

聽 聽DEFAULT nJump := 1

聽 聽FOR x := 1 TO nJump
聽 聽 聽 @ ::nRow, 00 SAYDOS ""
聽 聽 聽 ::nRow += 1
聽 聽NEXT

聽 聽::nCol := 00

聽 聽RETURN NIL

/**************************************************************************************/
METHOD esc( cText )
聽 聽@ ::nRow++, 00 SAYDOS cText
聽 聽::nCol := Len(cText) + 1

聽 聽RETURN NIL

/**************************************************************************************/
METHOD say( nRow, nCol, cText )

聽 聽IF nRow < ::nRow
聽 聽 聽 nRow := ::nRow
聽 聽ENDIF

聽 聽IF nCol < ::nCol
聽 聽 聽 nCol := ::nCol
聽 聽ENDIF

聽 聽::nRow := nRow
聽 聽::nCol := nCol

聽 聽@ ::nRow++, ::nCol SAYDOS cText

聽 聽::nCol := ::nCol + Len(cText) + 1

聽 聽RETURN NIL

/**************************************************************************************/
METHOD opencash( cPrinter, nCash )
聽 聽LOCAL cEscape 聽 聽:= ""
聽 聽DEFAULT cPrinter := "epson"
聽 聽DEFAULT nCash 聽 聽:= 0

聽 聽cEscape := Chr( 27 ) + Chr( 112 ) + WCStr( nCash ) + Chr(40) + Chr( 108 )
聽 聽IF Lower( cPrinter ) == "start"
聽 聽 聽 cEscape := Chr( 27 ) + Chr( 80 )
聽 聽ENDIF

聽 聽@ ::nRow++, 00 SAYDOS cEscape
聽 聽::nCol := Len(cEscape) + 1

聽 聽RETURN NIL

/**************************************************************************************/
METHOD sendtoprinter( lDelete )
聽 聽LOCAL x 聽 聽 := 1
聽 聽LOCAL nRet 聽:= 0
聽 聽LOCAL cMsg 聽:= ""
聽 聽LOCAL lShow := .f.

聽 聽DEFAULT lDelete := .t.

聽 聽SET DEVICE TO SCREEN
聽 聽SET PRINTER TO

聽 聽IF ::nCopy < 1
聽 聽 聽 ::nCopy := 1
聽 聽ENDIF

聽 聽FOR x := 1 TO ::nCopy
聽 聽 聽 ::printlogo()

聽 聽 聽 nRet := PrintFileRaw( ::cPrinter, ::cFile, ::cDocument )

聽 聽 聽 cMsg += "Copy " + WCStr( x ) + CRLF

聽 聽 聽 IF nRet # 1
聽 聽 聽 聽 聽lShow := .t.
聽 聽 聽 ENDIF

聽 聽 聽 SWITCH nRet
聽 聽 聽 CASE -1
聽 聽 聽 聽 聽cMsg += "Invalid parameters passed to function" ; EXIT
聽 聽 聽 CASE -2
聽 聽 聽 聽 聽cMsg += "WinAPI OpenPrinter() call failed" 聽 聽 聽; EXIT
聽 聽 聽 CASE -3
聽 聽 聽 聽 聽cMsg += "WinAPI StartDocPrinter() call failed" 聽; EXIT
聽 聽 聽 CASE -4
聽 聽 聽 聽 聽cMsg += "WinAPI StartPagePrinter() call failed" ; EXIT
聽 聽 聽 CASE -5
聽 聽 聽 聽 聽cMsg += "WinAPI malloc() of memory failed" 聽 聽 聽; EXIT
聽 聽 聽 CASE -6
聽 聽 聽 聽 聽cMsg += "File " + ::cFile + " not found" 聽 聽 聽 聽; EXIT
聽 聽 聽 DEFAULT
聽 聽 聽 聽 聽cMsg += "PRINTED OK!!!"
聽 聽 聽 END

聽 聽 聽 cMsg 聽 聽+= CRLF + CRLF

聽 聽NEXT

聽 聽IF lDelete
聽 聽 聽 FErase( ::cFile )
聽 聽ENDIF

聽 聽IF lShow
聽 聽 聽 MSGINFO( cMsg, ::cMsg )
聽 聽ENDIF

聽 聽RETURN NIL

/**************************************************************************************/
METHOD prnfile( cFile, lDeletepost )
聽 聽DEFAULT lDeletepost := .f.

聽 聽::cFile := cFile
聽 聽::sendtoprinter( lDeletepost )

聽 聽RETURN NIL

/**************************************************************************************/
METHOD printlogo()
聽 聽LOCAL cEmf := ""
聽 聽LOCAL oImg := NIL

聽 聽IF Empty( ::cLogo )
聽 聽 聽 RETURN NIL
聽 聽ENDIF

聽 聽IF !File( ::cLogo )
聽 聽 聽 MSGINFO( "Archivo logo no existe, verifique...", ::cMsg )
聽 聽 聽 RETURN NIL
聽 聽ENDIF

聽 聽//oImg := TImage()
聽 聽//oImg:LoadImage( , ::cLogo )
聽 聽//wgrabaemf( oImg:hDC, "wmlogo.xxx" )
聽 聽//PrintFileRaw( ::cPrinter, ::cLogo, ::cDocument )

聽 聽RETURN NIL

/**************************************************************************************/
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Clase TDirectPrint
Posted: Wed Feb 20, 2013 04:20 PM

Gracias maestro y Willian,

Hay alg煤n ejemplo para impresi贸n en USB en una impresora de Ticket Matricial?

Gracias,

Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Clase TDirectPrint
Posted: Wed Feb 20, 2013 04:41 PM

Joao,

Eso es todo lo que me ha enviado William. Supongo que el tendr谩 ejemplos de uso :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Clase TDirectPrint
Posted: Wed Feb 20, 2013 04:45 PM

Antonio / William

Y la funci贸n WCStr()

Alg煤n ejemplo de como utilizar la clase

Gracias.

Saludos,

Adhemar

Saludos,



Adhemar C.
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Clase TDirectPrint
Posted: Wed Feb 20, 2013 04:49 PM

Ya le he enviado un email a William, e imagino que el tambien ver谩 esta conversaci贸n, para que nos proporcione alg煤n ejemplo :-)

Y el codigo de esa funci贸n que falta, gracias

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Clase TDirectPrint
Posted: Wed Feb 20, 2013 04:56 PM

Gracias Antonio.

Esperar茅.

Saludos,

Adhemar

Saludos,



Adhemar C.
Posts: 1076
Joined: Fri Oct 07, 2005 10:41 PM
Re: Clase TDirectPrint
Posted: Wed Feb 20, 2013 05:16 PM
Aqui est谩

Tomada de CSTR de xharbour

Code (fw): Select all Collapse
FUNCTION WCStr( xExp, nDecimals )

   LOCAL cType

   IF xExp == NIL
      RETURN 'NIL'
   ENDIF

   cType := ValType( xExp )

   SWITCH cType
      CASE 'C'
         RETURN xExp

      CASE 'D'
         RETURN dToS( xExp )

      CASE 'L'
         RETURN IIF( xExp, '.T.', '.F.' )

      CASE 'N'
         IF !HB_IsNil( nDecimals )
            RETURN AllTrim(Str( xExp, 11, nDecimals ))
         ELSE
            RETURN AllTrim(Str( xExp ))
         ENDIF

      CASE 'A'
         RETURN "{ Array of " +  LTrim( Str( Len( xExp ) ) ) + " Items }"

      CASE 'B'
         RETURN '{|| Block }'

      CASE 'O'
         RETURN "{ " + xExp:ClassName() + " Object }"

      CASE 'P'
         RETURN NumToHex( xExp )

      CASE 'H'
         RETURN "{ Hash of " +  LTrim( Str( Len( xExp ) ) ) + " Items }"

      DEFAULT
         RETURN "Type: " + cType
   END

RETURN ""
William, Morales

Saludos



m茅xico.sureste
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Clase TDirectPrint
Posted: Wed Feb 20, 2013 06:49 PM

Gracias William.

Se puede imprimir un archivo de texto que incluya logo?

Podrias dar alg煤n ejemplo de como usarla.

Gracias.

Saludos,

Adhemar

Saludos,



Adhemar C.
Posts: 1076
Joined: Fri Oct 07, 2005 10:41 PM
Re: Clase TDirectPrint
Posted: Wed Feb 20, 2013 07:51 PM

acuellar,

Lo del logo quedo pendiente, no se ha terminado y pues solo fueron pruebas.

Lo del ejemplo de uso lo publicar茅 a la brevedad

William, Morales

Saludos



m茅xico.sureste