Que tal JBrita
Por lo que veo , esta alternativa cubre el problema de la distorsion del encolumnado con el tipo de letra, y al parecer es indepndite al tamaño del archivo, vere su aplicacion
Gracias .
Lubin
Que tal JBrita
Por lo que veo , esta alternativa cubre el problema de la distorsion del encolumnado con el tipo de letra, y al parecer es indepndite al tamaño del archivo, vere su aplicacion
Gracias .
Lubin
Hola JBrita
Hice la prueba de tu rutina utilizando la clase Report, llego a cargar correctamente del documento con 30 hojas.., en forma general digamos que lo cargo correctamente, el problema que surge es que al visualizarlo , el reporte del archivo texto no coincide necesariamente con las paginas resultantes, es decir que el inicio de la segunda pagina del texto (su encabezado ) al momento de mostrarse en pantalla se muestra al intermedio de la segunda pagina,, es decir se descompaginan,, en las paginas siguientes van saliendo los encabezados en otras ubicaciones del la pagina, un pequeño detalle.. !!
La alternativa seria lograr que coincidan los cortes de pagina del archivo texto con el del Report..., adicionalmente a ello ver la forma de deshabilitar un mensajito que siempre sale "El ancho del informe es mayor que el ancho de pagina" .. pero igual sale bien (respecto al ancho)
Ahi dejo la duda.. y gracias por tu colaboracion
Lubin
FUNCTION PROG_REPOR1()
* Programa inicial del reporte...
*Cuadro de dialogo.. que se pide el tipo de Salida... RP_DEVICE...
DEFINE DIALOG oDlg RESOURCE "JKR_BAL10_S1" TITLE "Balance de Comprobacion"
REDEFINE COMBOBOX oRP_DEVICE VAR RP_X_PRINT PROMPTS RP_V_PRINT ID 901 OF oDlg ON CHANGE (RP_DEVICE:=WCOMBO_COD(RP_X_PRINT))
REDEFINE GET oRP_FILE VAR RP_FILE ID 902 OF oDlg PICTURE "@!" WHEN RP_DEVICE="File" VALID .NOT. EMPTY(RP_FILE)
REDEFINE ............................
REDEFINE BUTTON ID 8011 OF oDlg ACTION (PROG_REPOR1_PROC(oSYS_DAT,oDlg,RP_DEVICE,@Z_TMP_FILE,@RP_FILE,RZ_DATA, ), oDlg:End())
REDEFINE BUTTON ID 8012 OF oDlg ACTION (RP_DEVICE:="",oDlg:End() )
ACTIVATE DIALOG oDlg
*Segun el DEVICE, definimos suu activavicion
IF RP_DEVICE=="Pant"
FVIEW_TEXT(z_tmp_file) && muestra el Archivo texto usando Executable externo LTFViewr5u
ferase(z_tmp_file) && Eliminamos el Archivo Temporal
ENDIF
IF RP_DEVICE=="File"
msginfo("El Reporte ha sido Creado en : "+RP_FILE,Z_TITULO)
ENDIF
RETURN .T.
FUNCTION PROG_REPOR1_PROC(oSYS_DAT,oDlg,RP_DEVICE,Z_TMP_FILE,RP_FILE,RZ_DATA )
** MODULO QUE CREA EL REPORTE !!!
LOCAL XDATOS1...
LOCAL .....
* definimos cual sera el cPort o salida para el reporte
DO CASE
CASE RP_DEVICE == "Pant" && Impresion por pantalla
WF_MDPATH(Z_PATH_TMP) && Creamos carpeta temporal
cPort = cTempFile(Z_PATH_TMP,"Txt") && Creamos Archivo Temporal para impresion
CASE RP_DEVICE $ "Lpt1,Lpt2,Lpt3,Com1,Com2" && Impresion por MATRIZ
cPort = RP_DEVICE && Asignamos puerto de impresion
CASE RP_DEVICE = "File" && Impresion por Archivo
WF_MDPATH(Z_PATH_REP) && *Creamos Carpeta de Reportes para JKont
cPort = Z_PATH_REP+ALLTRIM(FATRIM(RP_FILE))+".Txt" && Asignamos un archivo de salida
CASE RP_DEVICE = "Prin" && Impresion por Archivo
MSGSTOP("OPCION NO DISPONIBLE") && Asignamos un archivo de salida
RETURN .F.
OTHERWISE
MSGSTOP("Opcion de tipo de salida de impreion no definida o admitida")
RETURN .F.
ENDCASE
*CREACION DE OBJETO de Impresion: oPrn segun el tipo de salidaa... cPort
oPrn :=tDosPrn():New( cPort ) && Creamos el Puerto de Nueva Impresion
*INICIO DE IMPRESION :
***********************************************
use tablamia alias datos
DO WHILE .NOT. EOF()
.......cuerpo de la impresion
........
........
ENDDO
EJECT
IF RP_DEVICE = "Pant"
oPrn:Say(++WLINEA, 000 ," ") && RESETEAMOS EN BLANCO PARA LOS CODIGOS DE IMPRESION PARA Q NO SE VEA EN LA PANTALLA
ELSE
oPrn:Say(++WLINEA, 000 ,CHR(27)+"M"+CHR(27)+"2"+CHR(18)+CHR(27)+"x0") && RESETEAMOS LOS CODIGOS DE IMPRESION
ENDIF
oPrn:End() && Fin de objeto de impresion
*AQUI SEGUN EL TIPO DE RP_DEVICE (salida) cargamos las varialbles para mostar el reporte... o crearlo en archivo .. se ira por referencia
DO CASE
CASE RP_DEVICE=="Pant" && Cargamos el Nombre del Archivo Temporal a Mostar en Pantalla
Z_TMP_FILE:=cPort
CASE RP_DEVICE=="File" && Cargamos el NOmbre del File a Grabar en Disco
RP_FILE:=cPort
ENDCASE
RETURN .T.
FUNCTION FVIEW_TEXT(z_tmp_file)
*******************************
*modulo que permite mostrar un archivo texto grande, debera de estar instalado donde tengamos el ejecutable del sistema
* El parametro z_tmp_file debe ser el nombre de archivo con su ubicacion (drive y path) completo de preferencia, algo asi.. "d:\misdatos\listados\balance.txt"
local xcomando:="", x:=0
XCOMANDO= "LTFViewr5u "+z_tmp_file
x=waitrun(XCOMANDO)
IF x >32
msginfo("Error: No se encuentra disponible El modulo: {LTFViewr5u.exe} para Impresiones por pantalla, Avisar al supervisor , Err:"+fzero(x,4))
ENDIF
RETURN .T.lubin wrote:Buen dia a todos .. una SOLUCION A LA VISTA....
Queria comentarles respecto al problema para visualizar un archivo texto SIN IMPORTAR EL TAMAÑO, me ubiera gustado lograrlo usando al 100% con FiveWin pero le heche mano a la segunda alternativa ... usar un PROGRAMA EXTERNO... que se encarge de cargarlo y visualizarlo tal cual salio... sin posibilidad q que lo modifiquen y mantenga su formato al mostrarlo.
Luego de nadar en el Internet todos estos dias encontre este programa:... "Large Text File Viewer" y esta ubicado en http://www.swiftgear.com/ , es gratuito, y esta paginas tiene tambien otras utilidades que quizas le sirvan a alguien.
Yo lo utilizo para mostar unos archivos textos que me mandan bastante extensos (250 paginas) y los ha cargado sin dificultad..,,, y ahora tambien lo estoy usando para complementar mis impresiones por TDOSPRN... cargando el archivo generado tipo texto... y lo muestro en pantalla...
Ojala podamos hacer una funcion dentro de FiveWin.. que permitiera mostar directamente un archivo texto como ese progama... y si existe avisenme por favorr..
Aqui les dejo una idea como lo aplico ... quizas a alguien le sirva
Gracias a todos... los que colaboraroon.. ,,, este es un gran foro!!!
Lubin
FUNCTION PROG_REPOR1() * Programa inicial del reporte... *Cuadro de dialogo.. que se pide el tipo de Salida... RP_DEVICE... DEFINE DIALOG oDlg RESOURCE "JKR_BAL10_S1" TITLE "Balance de Comprobacion" REDEFINE COMBOBOX oRP_DEVICE VAR RP_X_PRINT PROMPTS RP_V_PRINT ID 901 OF oDlg ON CHANGE (RP_DEVICE:=WCOMBO_COD(RP_X_PRINT)) REDEFINE GET oRP_FILE VAR RP_FILE ID 902 OF oDlg PICTURE "@!" WHEN RP_DEVICE="File" VALID .NOT. EMPTY(RP_FILE) REDEFINE ............................ REDEFINE BUTTON ID 8011 OF oDlg ACTION (PROG_REPOR1_PROC(oSYS_DAT,oDlg,RP_DEVICE,@Z_TMP_FILE,@RP_FILE,RZ_DATA, ), oDlg:End()) REDEFINE BUTTON ID 8012 OF oDlg ACTION (RP_DEVICE:="",oDlg:End() ) ACTIVATE DIALOG oDlg *Segun el DEVICE, definimos suu activavicion IF RP_DEVICE=="Pant" FVIEW_TEXT(z_tmp_file) && muestra el Archivo texto usando Executable externo LTFViewr5u ferase(z_tmp_file) && Eliminamos el Archivo Temporal ENDIF IF RP_DEVICE=="File" msginfo("El Reporte ha sido Creado en : "+RP_FILE,Z_TITULO) ENDIF RETURN .T. FUNCTION PROG_REPOR1_PROC(oSYS_DAT,oDlg,RP_DEVICE,Z_TMP_FILE,RP_FILE,RZ_DATA ) ** MODULO QUE CREA EL REPORTE !!! LOCAL XDATOS1... LOCAL ..... * definimos cual sera el cPort o salida para el reporte DO CASE CASE RP_DEVICE == "Pant" && Impresion por pantalla WF_MDPATH(Z_PATH_TMP) && Creamos carpeta temporal cPort = cTempFile(Z_PATH_TMP,"Txt") && Creamos Archivo Temporal para impresion CASE RP_DEVICE $ "Lpt1,Lpt2,Lpt3,Com1,Com2" && Impresion por MATRIZ cPort = RP_DEVICE && Asignamos puerto de impresion CASE RP_DEVICE = "File" && Impresion por Archivo WF_MDPATH(Z_PATH_REP) && *Creamos Carpeta de Reportes para JKont cPort = Z_PATH_REP+ALLTRIM(FATRIM(RP_FILE))+".Txt" && Asignamos un archivo de salida CASE RP_DEVICE = "Prin" && Impresion por Archivo MSGSTOP("OPCION NO DISPONIBLE") && Asignamos un archivo de salida RETURN .F. OTHERWISE MSGSTOP("Opcion de tipo de salida de impreion no definida o admitida") RETURN .F. ENDCASE *CREACION DE OBJETO de Impresion: oPrn segun el tipo de salidaa... cPort oPrn :=tDosPrn():New( cPort ) && Creamos el Puerto de Nueva Impresion *INICIO DE IMPRESION : *********************************************** use tablamia alias datos DO WHILE .NOT. EOF() .......cuerpo de la impresion ........ ........ ENDDO EJECT IF RP_DEVICE = "Pant" oPrn:Say(++WLINEA, 000 ," ") && RESETEAMOS EN BLANCO PARA LOS CODIGOS DE IMPRESION PARA Q NO SE VEA EN LA PANTALLA ELSE oPrn:Say(++WLINEA, 000 ,CHR(27)+"M"+CHR(27)+"2"+CHR(18)+CHR(27)+"x0") && RESETEAMOS LOS CODIGOS DE IMPRESION ENDIF oPrn:End() && Fin de objeto de impresion *AQUI SEGUN EL TIPO DE RP_DEVICE (salida) cargamos las varialbles para mostar el reporte... o crearlo en archivo .. se ira por referencia DO CASE CASE RP_DEVICE=="Pant" && Cargamos el Nombre del Archivo Temporal a Mostar en Pantalla Z_TMP_FILE:=cPort CASE RP_DEVICE=="File" && Cargamos el NOmbre del File a Grabar en Disco RP_FILE:=cPort ENDCASE RETURN .T. FUNCTION FVIEW_TEXT(z_tmp_file) ******************************* *modulo que permite mostrar un archivo texto grande, debera de estar instalado donde tengamos el ejecutable del sistema * El parametro z_tmp_file debe ser el nombre de archivo con su ubicacion (drive y path) completo de preferencia, algo asi.. "d:\misdatos\listados\balance.txt" local xcomando:="", x:=0 XCOMANDO= "LTFViewr5u "+z_tmp_file x=waitrun(XCOMANDO) IF x >32 msginfo("Error: No se encuentra disponible El modulo: {LTFViewr5u.exe} para Impresiones por pantalla, Avisar al supervisor , Err:"+fzero(x,4)) ENDIF RETURN .T.