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
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:Code:"+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
- Code: Select all Expand view RUN
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:Code:"+fzero(x,4))
ENDIF
RETURN .T.
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: karinha and 49 guests