Como mostrar un Archivo Texto Plano

Re: Como mostrar un Archivo Texto Plano

Postby lubin » Tue Jul 28, 2009 5:11 pm

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
User avatar
lubin
 
Posts: 450
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru

Re: Como mostrar un Archivo Texto Plano

Postby lubin » Wed Jul 29, 2009 4:50 pm

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
User avatar
lubin
 
Posts: 450
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru

Re: Como mostrar un Archivo Texto Plano

Postby lubin » Wed Jul 29, 2009 5:44 pm

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.
 
User avatar
lubin
 
Posts: 450
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru

Re: Como mostrar un Archivo Texto Plano

Postby ACC69 » Wed Jul 29, 2009 7:32 pm

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.
 



Hola Lubin como esta, ya veo que aun sigue en busca de algun programa o rutina que se adapte al FWH, las rutinas y funciones que deje a la vista de todos, en mis ratos libres que tenga lo adaptare al fivewin, que es de gran utilidad para todos cargar archivos *.txt de mas de 500 paginas y tiene funciones , como busqueda de palabras,retroceso ,derecha e izquierda, etc etc etc en Clipper 5.3 me funciona de maravilla, pero bueno hare lo posible en mis ratos libres de adaptarlo al fivewin amigo y si alguno mas mejora el codigo fuente, les agradeceria que aportaran los cambios, bueno cuidense y saludos.

Atte: Adrian C. C.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Previous

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: karinha and 46 guests