TdosPrn con Preview e impresoras laser
Hola Ralph,
En cuanto a la vista preliminar no aparece, he encontrado los siguientes cosas.
a) Si tengo que especificar oPrn: cDevice: = "D: \ prueba.txt" y la palabra TxtPreview (oPrn: cDevice ", Anser Test", lModal,, cPort, oPrn, WndMain (),, oPrn: lModoGraf)
Luego recibirá Prueba.txt creado en la ruta de acceso especificada, pero con 0 bytes. Al mismo tiempo otro archivo con el número al azar y sin extensión de archivo que se crearán en la ruta de la aplicación (Por ej. 25161828) y este archivo contiene el informe en formato txt (I abierto el archivo con notepad.exe)
b) Si no se especifica oPrn: cDevice: = "D: \ prueba.txt" y la palabra TxtPreview (oPrn: cDevice ", Anser Test", lModal,, cPort, oPrn, WndMain (),, oPrn: lModoGraf)
A continuación, un archivo con el nombre de números aleatorios (Por ejemplo, 25161828) se crearán en la ruta de la aplicación, pero con 0 bytes. En este caso no se crea en absoluto.
C) Si tengo que especificar oPrn: cDevice: = "LPT1" y la palabra TxtPreview (oPrn: cDevice ", Anser Test", lModal,, cPort, oPrn, WndMain (),, oPrn: lModoGraf)
A continuación, un archivo con el nombre de números aleatorios (Por ejemplo, 25161828) se crearán en la ruta de la aplicación, pero con los datos del informe en el mismo.
Si no he definido oPrn: cFile entonces cuando yo salga de la ventana de vista previa, el archivo aleatorio recibirá automáticamente eliminado.
En todos _ anteriores, los datos no serán disponibles en la ventana de vista previa.
Cualquier ayuda
Recuerdos
En cuanto a la vista preliminar no aparece, he encontrado los siguientes cosas.
a) Si tengo que especificar oPrn: cDevice: = "D: \ prueba.txt" y la palabra TxtPreview (oPrn: cDevice ", Anser Test", lModal,, cPort, oPrn, WndMain (),, oPrn: lModoGraf)
Luego recibirá Prueba.txt creado en la ruta de acceso especificada, pero con 0 bytes. Al mismo tiempo otro archivo con el número al azar y sin extensión de archivo que se crearán en la ruta de la aplicación (Por ej. 25161828) y este archivo contiene el informe en formato txt (I abierto el archivo con notepad.exe)
b) Si no se especifica oPrn: cDevice: = "D: \ prueba.txt" y la palabra TxtPreview (oPrn: cDevice ", Anser Test", lModal,, cPort, oPrn, WndMain (),, oPrn: lModoGraf)
A continuación, un archivo con el nombre de números aleatorios (Por ejemplo, 25161828) se crearán en la ruta de la aplicación, pero con 0 bytes. En este caso no se crea en absoluto.
C) Si tengo que especificar oPrn: cDevice: = "LPT1" y la palabra TxtPreview (oPrn: cDevice ", Anser Test", lModal,, cPort, oPrn, WndMain (),, oPrn: lModoGraf)
A continuación, un archivo con el nombre de números aleatorios (Por ejemplo, 25161828) se crearán en la ruta de la aplicación, pero con los datos del informe en el mismo.
Si no he definido oPrn: cFile entonces cuando yo salga de la ventana de vista previa, el archivo aleatorio recibirá automáticamente eliminado.
En todos _ anteriores, los datos no serán disponibles en la ventana de vista previa.
Cualquier ayuda
Recuerdos
Estimado Ralph,
He encontrado que el problema es con el METHOD BuildDbfTmp () en TXTVIEW.PRG
oFile = TTxtFile():New( ::cTxtFile ) // Causa del problema
No puedo entender por qué esto está sucediendo. Alguna idea de por qué es así?. ¿Está usted usando un TTextFile.Prg diferentes? Estoy utilizando FWH 8.08
El nombre del archivo del informe es obtener datos generados automáticamente (un número aleatorio y un punto al final. Parece 567432). No sé si el nombre del archivo está creando el problema con TTextFile.Prg
Anser
He encontrado que el problema es con el METHOD BuildDbfTmp () en TXTVIEW.PRG
oFile = TTxtFile():New( ::cTxtFile ) // Causa del problema
Code: Select all
METHOD BuildDbfTmp() CLASS TTxtPreview
local oFile, nPag, cTxt, lFim, oDlg
local cLine, nStart, nEnd, cAlias
SysRefresh()
cAlias := cGetNewAlias( "TXTP" )
::cDbfTmp := Upper( cTmpName( ::cDir ) )
::cMemTmp := StrTran( ::cDbfTmp, ".DBF", cMemoExt() )
if File( ::cDbfTmp )
FErase( ::cDbfTmp )
endif
DbCreate( ::cDbfTmp, { { "PAGINA", "N", 5, 00 },;
{ "TEXT", "M", 10, 00 } } )
USE ( ::cDbfTmp ) EXCLUSIVE ALIAS &( cAlias ) NEW
// Hasta aquí está bien, los datos del informe en formato de texto está
// disponible ahora con pocos KB de tamaño.
oFile = TTxtFile():New( ::cTxtFile )
// Pero después de este comando en el Informe convertido en archivo
// de datos de 0 bytes y la DBF con Temperary campo Memo no tendrá
// ningún registro que es la verdadera causa del problema con la vista
// previa.
if ! oFile:Open( 0 )
MsgInfo( "El Archivo " + ::cTxtFile + ", no puede ser abierto." )
return nil
endif
DEFINE DIALOG oDlg TITLE "Generando Previsualizacion..." ;
FROM 230, 217 TO 360, 575 PIXEL
@ 10, 08 TO 40, 172 OF oDlg PIXEL
@ 1.4, 2 ICON NAME "PRINT" OF oDlg
@ 25, 55 SAY "Generando Previsualizacion..." PIXEL OF oDlg SIZE 80, 12 CENTER
@ 47, 60 BUTTON "Espere..." SIZE 60, 12 PIXEL OF oDlg ACTION .t.
ACTIVATE DIALOG oDlg CENTER NOWAIT
CursorWait()
SysRefresh()
nPag= 0
cTxt= ""
lFim= .F.
DO WHILE .T.
cLine = oFile:cLine // Ralph, Aquí me cLine vacías
if ::lModoGraf
// eliminamos _ de control de la impresora
cLine = strtran(cLine, ::cNegOn , "")
cLine = strtran(cLine, ::cNegOff, "")
cLine = strtran(cLine, ::c10cpi , "")
cLine = strtran(cLine, ::c12cpi , "")
cLine = strtran(cLine, ::cWidOn , "")
cLine = strtran(cLine, ::cWidOff, "")
endif
cTxt += cLine + Space(1) + CRLF
oFile:Skip(1)
//--- si encuentra salto de pagina
IF ::cFormFeed $ cLine .or. oFile:lEof()
nPag ++ // incrementa Pagina
append blank // adiciona reg
replace PAGINA with nPag // grava os dados
replace TEXT with cTxt
cTxt = ""
ENDIF
IF oFile:lEof
lFim = .t.
EXIT
ENDIF
ENDDO
oFile:Close()
SELECT ( cAlias )
DATABASE ::oDbf
::oDbf:bEoF = nil
::oDbf:bBoF = nil
::oDbf:GoTop()
CursorArrow()
oDlg:End()
return Nil
El nombre del archivo del informe es obtener datos generados automáticamente (un número aleatorio y un punto al final. Parece 567432). No sé si el nombre del archivo está creando el problema con TTextFile.Prg
Anser
Estimado Ralph
Solucionado problema de la vista previa.
El problema es en el método PrintSetup () CLASE TDosPrn
He tenido que añadir ". \" Con el nombre de archivo temporal
Ahora tengo que resolver los siguientes problemas
a) Mapa LPT1 usando el comando net use lpt1: \\PcName\PrintShareName de la propia clase (Si no figura en el mapa)
b) Dar a la disposición del usuario para guardar el informe como archivo de texto para referencia futura
c) Dar a la disposición del usuario para guardar el informe como Excel, Word
Recuerdos
Anser
Solucionado problema de la vista previa.
El problema es en el método PrintSetup () CLASE TDosPrn
He tenido que añadir ". \" Con el nombre de archivo temporal
Code: Select all
if ::lPreview
::cPort := cOutPort
::cDevice :=".\"+ Upper( cTempFile() ) // Upper( cTempFile() )
else
::cPort := StrTran( cOutPort, ":", "" )
::cDevice := trim(::cPort)
endif
a) Mapa LPT1 usando el comando net use lpt1: \\PcName\PrintShareName de la propia clase (Si no figura en el mapa)
b) Dar a la disposición del usuario para guardar el informe como archivo de texto para referencia futura
c) Dar a la disposición del usuario para guardar el informe como Excel, Word
Recuerdos
Anser
Anser:
Has probado lo siguiente?
oPrn:cPort := "\\PcName\PrintShareName"
Yo lo hago asi y no necesito mapear LPT1
Saludos
Ralph
Code: Select all
a) Mapa LPT1 usando el comando net use lpt1: \\PcName\PrintShareName de la propia clase (Si no figura en el mapa)
oPrn:cPort := "\\PcName\PrintShareName"
Yo lo hago asi y no necesito mapear LPT1
Saludos
Ralph
Estimado Ralph,
Tengo algunas impresoras matriciales, de inyección de tinta y las impresoras láser en mi red.
Las impresoras de matriz de puntos que muestra el valor de puerto \\PcName\PrnShareName está trabajando bien con tu clase, pero algunas de las impresoras de matriz de puntos se muestran como puerto LPT1 y tengo problema en la impresión de estas impresoras, si no he asignado LPT1.
Sé que no es su clase de problema.
No sé por qué es así. Algunas impresoras de matriz de puntos del puerto se muestra como \\PcName\PrnShareName y algunas de las impresora matriz de puntos que figura como puertos LPT1
Estoy sorprendido con esto. No sabe dónde proceder ahora.
Recuerdos
Anser
Tengo algunas impresoras matriciales, de inyección de tinta y las impresoras láser en mi red.
Las impresoras de matriz de puntos que muestra el valor de puerto \\PcName\PrnShareName está trabajando bien con tu clase, pero algunas de las impresoras de matriz de puntos se muestran como puerto LPT1 y tengo problema en la impresión de estas impresoras, si no he asignado LPT1.
Sé que no es su clase de problema.
No sé por qué es así. Algunas impresoras de matriz de puntos del puerto se muestra como \\PcName\PrnShareName y algunas de las impresora matriz de puntos que figura como puertos LPT1
Estoy sorprendido con esto. No sabe dónde proceder ahora.
Recuerdos
Anser
Estimado Ralph,
Me modificado la clase TDosPrn y TxtPreview
Modificaciones realizadas
1) Tuve problemas con algunas impresoras de red (matriz de puntos), que devolverá el puerto como LPT1. En este caso, la aplicación intentará copiar el archivo en LPT1 local que, a su vez, no la impresión si su PC es el puerto LPT no figura en el mapa.
Este problema está solucionado y ahora el usuario no tiene que molestar LPT1 si se asigna o no. En cualquier caso, se imprimirá.
2) Si el usuario selecciona una impresora de matriz DOT entonces la impresión se realiza en modo texto automáticamente. Si el usuario selecciona Impresora de tinta o la impresora láser a continuación, la impresión se realiza en modo gráfico automáticamente.
3) Desde la ventana Vista previa de impresión, si el usuario haga clic en el botón Imprimir, el usuario de configuración de pantalla no se visualiza segunda vez, en lugar de imprimir que se realiza en el marco de la configuraciones de usuario especificada por el usuario inicialmente.
Con estas modificaciones ahora no tengo ningún problema en una red con diferentes tipos de impresoras (matriz de puntos, InkJet / Láser)
Impresoras locales y las impresoras de red en diferentes sistemas operativos Windows.
Si usted necesita la versión modificada que puede enviar a usted,
Su clase se convirtió en muy útil para mí.
Realmente gracias por la clase.
Gracias y Saludos
Anser
Me modificado la clase TDosPrn y TxtPreview
Modificaciones realizadas
1) Tuve problemas con algunas impresoras de red (matriz de puntos), que devolverá el puerto como LPT1. En este caso, la aplicación intentará copiar el archivo en LPT1 local que, a su vez, no la impresión si su PC es el puerto LPT no figura en el mapa.
Este problema está solucionado y ahora el usuario no tiene que molestar LPT1 si se asigna o no. En cualquier caso, se imprimirá.
2) Si el usuario selecciona una impresora de matriz DOT entonces la impresión se realiza en modo texto automáticamente. Si el usuario selecciona Impresora de tinta o la impresora láser a continuación, la impresión se realiza en modo gráfico automáticamente.
3) Desde la ventana Vista previa de impresión, si el usuario haga clic en el botón Imprimir, el usuario de configuración de pantalla no se visualiza segunda vez, en lugar de imprimir que se realiza en el marco de la configuraciones de usuario especificada por el usuario inicialmente.
Con estas modificaciones ahora no tengo ningún problema en una red con diferentes tipos de impresoras (matriz de puntos, InkJet / Láser)
Impresoras locales y las impresoras de red en diferentes sistemas operativos Windows.
Si usted necesita la versión modificada que puede enviar a usted,
Su clase se convirtió en muy útil para mí.
Realmente gracias por la clase.
Gracias y Saludos
Anser
Enviamela a: rdelcastillo@consorcioinformatico.com
incluire _ que has hecho y lo pondre para uso publico.
Saludos
Ralph
incluire _ que has hecho y lo pondre para uso publico.
Saludos
Ralph
Estimado Ralph y Cesar Cortes Cruz,
Enlace de descarga
http://rapidshare.com/files/160790032/A ... n.zip.html
Por favor, consulte el archivo readme.txt incluido en el archivo zip
He comentado mi nombre en cada lugar donde he hecho _. Buscar mi nombre en el de la PRG para encontrar fácilmente _ que he hecho.
Raplh he enviar un correo a la dirección de correo electrónico que usted ID
Recuerdos
Anser
Enlace de descarga
http://rapidshare.com/files/160790032/A ... n.zip.html
Por favor, consulte el archivo readme.txt incluido en el archivo zip
He comentado mi nombre en cada lugar donde he hecho _. Buscar mi nombre en el de la PRG para encontrar fácilmente _ que he hecho.
Raplh he enviar un correo a la dirección de correo electrónico que usted ID
Recuerdos
Anser
Uppsss Anserkk
No he podido descargar el archivo , lanza un error de limite de descargas
De todos modos importante aporte por lo leido, seguro Ralphs nos da un buen link con _ incorporados muy pronto
Gracias a amboss
Lubin
No he podido descargar el archivo , lanza un error de limite de descargas
De todos modos importante aporte por lo leido, seguro Ralphs nos da un buen link con _ incorporados muy pronto
Gracias a amboss
Lubin
anserkk wrote:Estimado Ralph y Cesar Cortes Cruz,
Enlace de descarga
http://rapidshare.com/files/160790032/A ... n.zip.html
Por favor, consulte el archivo readme.txt incluido en el archivo zip
He comentado mi nombre en cada lugar donde he hecho _. Buscar mi nombre en el de la PRG para encontrar fácilmente _ que he hecho.
Raplh he enviar un correo a la dirección de correo electrónico que usted ID
Recuerdos
Anser
Estimado Ralph,
Tenemos que resolver otro problema.
Supongamos que el usuario seleccione una red de la impresora de matriz de puntos que está apagado o fuera de línea en el momento en cuestiones usuario el comando de impresión.
Recuerde DOSPRINT.BAT se copia el archivo de texto a \ \ PcName \ PrintShareName
En la actualidad, la clase no será capaz de advertir al usuario de que la impresora está fuera de línea.
Estoy tratando de una solución a este problema, pero hasta ahora no he encontrado ninguna solución satisfactoria a este problema. He pedido el apoyo para identificar a una impresora sin conexión / estado en línea sobre el foro Inglés y español foro.
Recuerdos
Anser
Tenemos que resolver otro problema.
Supongamos que el usuario seleccione una red de la impresora de matriz de puntos que está apagado o fuera de línea en el momento en cuestiones usuario el comando de impresión.
Recuerde DOSPRINT.BAT se copia el archivo de texto a \ \ PcName \ PrintShareName
En la actualidad, la clase no será capaz de advertir al usuario de que la impresora está fuera de línea.
Estoy tratando de una solución a este problema, pero hasta ahora no he encontrado ninguna solución satisfactoria a este problema. He pedido el apoyo para identificar a una impresora sin conexión / estado en línea sobre el foro Inglés y español foro.
Recuerdos
Anser
Anser...
Puedes enviarmelo, yo lo levanto en mi server para tener la descarga disponible para todos.
A mi mail corporativo ( informatica at radiata dot cl )
Desde Chile
Adolfo
Puedes enviarmelo, yo lo levanto en mi server para tener la descarga disponible para todos.
A mi mail corporativo ( informatica at radiata dot cl )
Desde Chile
Adolfo
Ji,ji,ji... buena la cosa... "all you need is code"
http://www.xdata.cl - Desarrollo Inteligente
----------
Lenovo Legion Y520, 16GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1050
http://www.xdata.cl - Desarrollo Inteligente
----------
Lenovo Legion Y520, 16GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1050