Clase TDirectPrint
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Clase TDirectPrint
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
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
Re: Clase TDirectPrint
Muy suave, William dijo que me iba a enviar una muestra. Esperando ansiosamente.
Saludos.
Saludos.
João Santos - São Paulo - Brasil
Re: Clase TDirectPrint
Antonio,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
Hace una semana te he enviado correo, confirma de recibido por favor...
William, Morales
Saludos
méxico.sureste
Saludos
méxico.sureste
- ruben Dario
- Posts: 986
- Joined: Thu Sep 27, 2007 3:47 pm
- Location: Colombia
Re: Clase TDirectPrint
Willian ,
Saludos
Me podrias proporcionar un ejemplo de como se usa esta libreria , ya que no veo documentacion.
Saludos
Me podrias proporcionar un ejemplo de como se usa esta libreria , ya que no veo documentacion.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Clase TDirectPrint
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
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
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Clase TDirectPrint
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-contri ... g&can=2&q=
wtraw.prg
http://code.google.com/p/fivewin-contri ... g&can=2&q=
wtraw.prg
Code: Select all
/*
//
// 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 + ;
" _ 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
/**************************************************************************************/
Re: Clase TDirectPrint
Gracias maestro y Willian,
Hay algún ejemplo para impresión en USB en una impresora de Ticket Matricial?
Gracias,
Hay algún ejemplo para impresión en USB en una impresora de Ticket Matricial?
Gracias,
João Santos - São Paulo - Brasil
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Clase TDirectPrint
Joao,
Eso es todo lo que me ha enviado William. Supongo que el tendrá ejemplos de uso
Eso es todo lo que me ha enviado William. Supongo que el tendrá ejemplos de uso
Re: Clase TDirectPrint
Antonio / William
Y la función WCStr()
Algún ejemplo de como utilizar la clase
Gracias.
Saludos,
Adhemar
Y la función WCStr()
Algún ejemplo de como utilizar la clase
Gracias.
Saludos,
Adhemar
Saludos,
Adhemar C.
Adhemar C.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Clase TDirectPrint
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
Y el codigo de esa función que falta, gracias
Re: Clase TDirectPrint
Aqui está
Tomada de CSTR de xharbour
Tomada de CSTR de xharbour
Code: Select all
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
Saludos
méxico.sureste
Re: Clase TDirectPrint
Gracias William.
Se puede imprimir un archivo de texto que incluya logo?
Podrias dar algún ejemplo de como usarla.
Gracias.
Saludos,
Adhemar
Se puede imprimir un archivo de texto que incluya logo?
Podrias dar algún ejemplo de como usarla.
Gracias.
Saludos,
Adhemar
Saludos,
Adhemar C.
Adhemar C.
Re: Clase TDirectPrint
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
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
Saludos
méxico.sureste