2 de abril de 2011

Documentación en Español de FoxyPreviewer

Artículo original: FoxyPreviewer Documentation
http://foxypreviewer.codeplex.com/documentation
Autor: VFPIMAGING
Traducido por: Luis Maria Guayán

Requisitos previos:

Visual FoxPro 9 SP2

Si utiliza formularios de nivel superior, se requiere la instalación de la última revisión acumulativa para VFP9 SP2 KB968409, para corregir un error del SP2 que hace que la barra de herramientas en un formulario de nivel superior se muestre deshabilitada. La forma más fácil de actualizar su VFP9SP2 con las revisiones más recientes es instalar el "Woody's Runtime Installer", que se puede encontrar aquí: Woody VFP9 SP2 Runtime Installer con todas las revisiones (Rev 7423)

Uso:

Para usarlo con sus propios informes se hizo aún más simple de lo que era originalmente. Ahora puede utilizar FoxyPreviewer de dos maneras:

1 - Sin cambiar nada de código en su aplicación (Modo Simplificado)

Vea lo fácil es cambiar completamente el aspecto y darle algunos super poderes a sus informes:
DO FOXYPREVIEWER.APP 
REPORT FORM YourReport PREVIEW 
Eso es todo!

Esto significa que todo lo que necesita hacer es "DO FoxyPreviewer.App" al inicio de su ejecutable, y todos los informes que utilizan la cláusula "PREVIEW" se visualizaran mediante la interfaz simplificada y súper poderosa de FoxyPreviewer.

Tenga en cuenta que algunas funciones no están disponibles con esta opción, pero siguen siendo más vistosos, como se puede ver en la tabla al final de este artículo.

2 - El modo original y mas poderoso (Modo Mejorado)

Con sólo cuatro líneas de código podrá incluir más funcionalidades:
LOCAL loReport AS "PreviewHelper" OF "FoxyPreviewer.App" 
loReport = CREATEOBJECT("PreviewHelper") 
loReport.AddReport(_Samples + "\Solution\Reports\colors.frx", "FOR Client = 'VFPx' ") && FRX File, Clauses 
loReport.RunReport() 

El archivo principal es FOXYPREVIEWER.APP que contiene la clase PreviewHelper que es la clase que se necesita para crear una instancia para que las nuevas opciones de barra de herramientas. Ésta usa la clase ExtensionHandler de ReportListener para realizar todos los cambios en la barra de herramientas original.


Comparación entre los dos modos:


FunciónVista previa predeterminada de VFP 9FoxyPreviewer simplificadoFoxyPreviewer mejorado
Búsqueda en vista previaNoSiSi
Botón del cuadro de diálogo de impresoraNoSiSi
Miniaturas de vista previa de páginasNoSiSi
Guardar como archivo de imagenNoSiSi
Guardar como PDFNoSiSi
Guardar como RTFNoSiSi
Guardar como XLS / XMLNoSiSi
Guardar como HTMLNoNoSi
Guardar como TXTNoNoSi
Número de copiasNoNoSi
Lista desplegable de impresorasNoNoSi
Textos justificadosNoSiSi
Botones grandesNoSiSi
Enviar correo electrónicoNoSiSi
Cambiar la configuración interactivamenteNoSiSi
Traducido a otros idiomasNoSiSi
Barra de progreso mejoradaNoSiSi
Líneas de código necesario para ejecutar un informe114

Personalización en Modo Mejorado

Toda la información siguiente se aplica solamente al Modo Mejorado !!!
Obviamente que puede elegir qué funciones estarán disponibles en la barra de herramientas de la vista previa del informe. Hay algunas propiedades evidentes que puede establecerse para configurar sus necesidades. A continuación se muestran los métodos y propiedades disponibles:


Métodos

(todos obligatorios)
  • AddReport(tcFRXFile, tcClauses, tcAlias)
  • Es el lugar donde se configura que informe y que las cláusulas se utilizará
    • tcFRXFile - caracter, el informe FRX a ejecutarse
    • tcClauses - caracter, las cláusulas de informe
    • tcAlias - caracter, el nombre de la tabla o el cursor para seleccionar antes de ejecutar el informe
    • Ej.:
      .AddReport(_Samples + "\Solution\Reports\wrapping.frx", "NODIALOG FOR title = 'S' RANGE 3,3")
  • RunReport()
  • Ejecuta el informe seleccionado y muestra la ventana de vista previa y la barra de herramientas de FoxyPreviewer
Propiedades
(todas opcionales)

No es necesario configurarlas a todas. Puede permitir a los usuarios configurar todas sus preferencias utilizando el botón Preferencias.
General
  • cTitle - caracter, el título de la ventana de la vista previa
  • nShowToolBar - numérico, configura la visibilidad de la barra de herramientas del informe cuando se ejecute la vista previa. (1 = Visible (predeterminado), 2 = Invisible, 3 = Utiliza el valor del archivo de recursos)
  • nWindowState - numérico, define el estado del formulario de la vista previa (0 = Normal, 2 = Maximizada)
  • nDockType - lógico o numérico (0-4). Si es .F. el acoplamiento utiliza el valor del archivo de recursos, ó numérico para forzar el acoplamiento de la barra de herramientas.
  • nMaxMiniatureDisplay - numérico, la cantidad de informes que que se muestran en el formulario de miniaturas.
  • cFormIcon - caracter, el nombre del archivo del icono que se utilizará en la vista previa y otros formularios auxiliares
  • lDirectPrint - lógico, bandera que dirige la salida directamente a la impresora, sin vista previa (predeterminado = .F.)
  • nThermType - numérica, el tipo de barra de progreso que se utiliza (1 = predeterminado de VFP9, 2 = mejorado de Windows)
  • lUseListener - lógico, configura si ReportListeners se utilizará durante la impresión. La previsualización del informe utilizará siempre listeners. Hay algunas situaciones o incompatibilidades entre algunas impresoras y listeners de informes por lo que se puede tratar de establecer esta propiedad en .F. para obtener la forma "antigua" de impresión. De esta manera si es .F., REPORTBEHAVIOR se establecerá en 80. Útil para las impresoras matriciales. (Disponible sólo en el modo mejorado)
  • lQuietMode - lógico, configura la propiedad QuietMode para los listeners que utiliza. La barra de pregreso para la generación de informes y el envío de correo electrónico se configura mediante esta propiedad. (predeterminado = .F.)
  • cDestFile - caracter, configura el nombre del archivo de salida que se genera cuando se llama "RunReport()". Si se establece esta propiedad no se previsualizarse el informe
  • nSearchPages - numérico, configura la cantidad de páginas que se analizarán durante las búsquedas en las previsualizaciones. Predeterminado = -1 (todas las páginas)
  • nButtonSize - numérico, configura el tamaño de los botones en la barra de herramientas de la vista previa (1 = 16 x 16 píxeles (predeterminado), 2 = 32 x 32 píxeles)
  • cLanguage - caracter, el idioma predeterminado que se utiliza en todos los cuadros de diálogo e información sobre herramientas
  • cPrinterName - caracter, el nombre de la impresora predeterminada que se utiliza en el modo mejorado
  • lOpenViewer - lógico, configura si el informe guardado automáticamente se abrirá, utilizando la aplicación predeterminada, después de generado
  • cSuccessor - caracter, el nombre de la clase report successor. (Sólo para usuarios avanzados)
Barra de herramientas
  • lSendToEmail - lógico, configura si se mostrará el botón "enviar correo electrónico" (no disponible aún)
  • lSaveToFile - lógico, configura si se mostrará el botón "Guardar archivo"
  • lShowCopies - lógico, muestra el número de copias
  • lShowMiniatures - lógico, muestra la página de miniaturas
  • lShowSetup - lógico, muestra el botón de preferencias de usuario en la barra de herramientas
  • lShowPrinters - lógico, configura si se mostrará la lista desplegable de impresoras disponibles
  • lShowSearch - lógico, configura si los botones de búsqueda será visibles
  • nCopies - numérica, la cantidad predeterminada de copias a ser impresas (disponible sólo en el modo mejorado)
  • lPrintVisible - lógico, muestra el botón Imprimir de la barra de herramientas
  • nZoomLevel - numérico, el nivel de zoom inicial de la ventana de vista previa. Los valores posibles son: 1-10%, 2-25%, 3-50%, 4-75%, 5-100% (predeterminado), 6-150%, 7-200%, 8-300%, 9-500%, 10-toda la página
  • lPrinterPref - lógico, muestra el botón "Cambiar las preferencias de impresión" en la barra de herramientas
  • nPrinterPropType - numérico, el tipo de cuadro de diálogo de preferencias de impresión (1 = cuadro de diálogo de impresión, 2 = Cuadro de diálogo de propiedades de la impresora)
  • nCanvasCount - numérico, el número inicial de páginas que se procesa en la vista previa del formulario. Los valores válidos son 1 (predeterminado), 2 ó 4.
Tipos de salida permitidos en el botón "Guardar como" de la barra de herramientas
  • lSaveAsImage - lógico, incluye la opción "Guardar como imagen" en el menú
  • lSaveAsHTML - lógico, incluye la opción "Guardar como HTML" en el menú (disponible sólo en el modo mejorado)
  • lSaveAsRTF - lógico, incluye la opción "Guardar como RTF" en el menú
  • lSaveAsXLS - lógico, incluye la opción "Guardar como XLS" en el menú
  • lSaveAsPDF - lógico, incluye la opción "Guardar como PDF" en el menú
  • lSaveAsTXT - lógico, incluye la opción "Guardar como TXT" en el menú (disponible sólo en el modo mejorado)
  • cOutputPath - caracter, la ruta de acceso utilizado para guardar las salidas
Configuración general de correo electrónico
  • nEmailMode - numérico, el tipo de correo electrónico (1 = MAPI, 2 = CDOSYS HTML, 3 = texto de CDOSYS, 4 = procedimiento personalizado)
  • lEmailAuto - lógico, genera automáticamente el archivo de salida del informe
  • cEmailType - caracter, el tipo de archivo que se utiliza en los correos electrónicos (PDF, RTF, HTML o XLS)
  • cEmailPRG - caracter, el nombre de un PRG que activará su correo electrónico personalizado. En este PRG, debe recibir un parámetro, tcFiIle, que es el archivo de salida temporal que enviaremos por correo electrónico. Un ejemplo completo está disponible en el archivo "MYSENDMAIL.PRG" que muestra cómo puede enviar sus correos electrónicos. Para utilizarlo, debe establecer el valor de esta propiedad, por ejemplo: .cEmailPRG = "MySendMail.Prg"
  • cSaveDefName - caracter, el nombre predeterminado del archivo a guardar. Disponible en dialogo "Guardar como" o utilizado automáticamente si lEmailAuto = .T.
  • lAutoSendMail - lógico, para enviar un correo electrónico automáticamente al procesar el informe
Propiedades de correo electrónico CDOSYS
  • cSMTPServer - caracter, la dirección del servidor SMTP
  • nSMTPPort - numérica, el puerto SMTP (normalmente 25)
  • lSMTPUseSSL - lógico, configura si el servidor SMTP requiere SSL (conexión de seguridad)
  • cSMTPUserName - caracter, nombre de usuario SMTP
  • cSMTPPassword - caracter, contraseña SMTP
  • cEmailTo - caracter, el correo electrónico de destino. Puede utilizar la coma "," como separador para utilizar más de una dirección
  • cEmailCC - caracter, el correo electrónico de la copia de destino. Puede utilizar el la coma "," como separador para utilizar más de una dirección
  • cEmailBCC - caracter, el correo electrónico de copia oculta de destino. Puede utilizar la coma "," como separador para utilizar más de una dirección
  • cEmailReplyTo - caracter, el correo electrónico que se utiliza en las respuestas
  • cEmailSubject - caracter, el Asunto del correo electrónico/
  • cEmailBody - caracter, el texto del cuerpo del correo electrónico
  • cEmailFrom - caracter, la información del remitente de correo electrónico. Puede agregar algunos títulos personalizados, por ejemplo: 'Equipo FoxyPreviewer '
  • cEmailBodyFile - caracter, el archivo HTML que se utiliza como cuerpo del correo electrónico
  • lReadReceipt - lógico, configura si el mensaje le pedirá confirmación de lectura
  • lPriority - lógico, configura si el nivel de prioridad será alto
  • cEncryptProcedure - caracter, el programador puede aplicar su propio método de codificación en la cadena de contraseña (para usuarios avanzados)
  • cDecryptProcedure - caracter, el programador puede aplicar su propio método de codificación en la cadena de contraseña (para usuarios avanzados)
  • cCryptKey - caracter, la clave de encriptación utilizada para cifrar la contraseña SMTP almacenada en la tabla de configuración (para usuarios avanzados)
Propiedades de PDF
  • lPDFasImage - lógico, generará el documento PDF como un documento de imagen (predeterminado =.F.)
  • nPDFPageMode - entero, configura el modo de página del documento PDF. (0 = Vista Normal (predeterminado), 1 = Mostrar el panel de miniaturas)
  • lPDFEmbedFonts - lógico, configura si el motor PDF incrusta las fuentes true type en el documento PDF
  • lPDFEncryptDocument - lógico, configura si el motor PDF encripta el documento PDF, lo que le permite establecer otras restricciones a los documentos, utilizando las propiedades siguientes
  • lPDFCanPrint - lógico, configura si el documento PDF 'cifrado' permitirá imprimir. Funciona solo si lEncryptDocument = .T.(véase más arriba)
  • lPDFCanEdit - lógico, configura si el documento PDF 'cifrado' permitirá editar. Funciona solo si lEncryptDocument = .T.(véase más arriba)
  • lPDFCanCopy - lógico, configura si el documento PDF 'cifrado' permitirá copiar. Funciona solo si lEncryptDocument = .T.(véase más arriba)
  • lPDFCanAddNotes - lógico, configura si el documento PDF 'cifrado' permitirá agregar notas. Funciona solo si lEncryptDocument = .T.(véase más arriba)
  • cPDFMasterPassword - lógico, configura la contraseña maestra del documento PDF "cifrado". Debe ser diferente de la propiedad 'cPDFUserPassword' de abajo. Funciona solo si lEncryptDocument = .T.(véase más arriba)
  • cPDFUserPassword - lógico, configura la contraseña de usuario del documento PDF "cifrado". Debe ser diferente de la propiedad 'cPDFMasterPassword' de arriba. Funciona solo si lEncryptDocument = .T.(véase más arriba)
  • lPDFShowErrors - lógico, configura si los mensajes de error durante la generación de PDF se planteará al usuario. Establezca esta propiedad en .T. si se enfrentan a algunas cuestiones PDF, faltan campos, etc. Esto nos ayudará a encontrar el origen del problema.
  • cPdfAuthor - caracter, el autor del documento
  • cPdfTitle - caracter, el título del documento
  • cPdfSubject - caracter, el tema del documento
  • cPdfKeyWords - caracter, las palabras clave que desea incluir en el documento PDF
  • cPdfCreator - caracter, por defecto: "pdfx / foxypreviewer"
  • cPDFSymbolFontsList - caracter, una lista de fuentes que no se puede convertir en PDF. Generalmente, códigos de barras y fuentes de símbolos. Delimitado por comas, por ejemplo. "webdings, Biro". Internamente, FoxyPreviewer ya tiene una lista de más de 30 tipos que siempre se convertirán en imágenes. Intente primero generar el PDF sin agregar la fuente a la lista. Solo si no se procesa correctamente agregarlo aquí!
Errores
  • lSilent - lógico, no muestra ningún cuadro de mensajes acerca de errores y escribe el mensaje en la propiedad cErrors
  • cErrors - caracter, contiene el mensaje de error cuando lSilent =.F.
Información devuelta (propiedades de sólo lectura)
  • nVersion - numérico, devuelve la información de la versión simplificada de FoxyPreviewer
  • cVersion - caracteres, devuelve la información detallada de la versión de FoxyPreviewer
  • lPrinted - lógica, para comprobarse después de ejecutar el informe. Indica si el usuario imprimió el informe actual
  • lSaved - lógica, para comprobarse después de ejecutar el informe. Indica si el usuario guardo en un archivo el informe actual
  • lEmailed - lógica, para comprobarse después de ejecutar el informe. Indica si el usuario envió por correo electrónico el informe actual
  • nPageTotal - numérico, la cantidad de páginas del informe actual
Automatizar con IntelliSense
(Modo mejorado)

También he creado un pequeño PRG que actualiza la tabla FOXCODE para agregar una secuencia de comandos de IntelliSense para utilizarlo. Ejecute el archivo INSTALLFOXCODE.PRG para actualizar el IntelliSense.

Para probarlo, abra cualquier archivo PRG o método y escriba:

FOXYPREVIEW y una secuencia de comandos completa con todas las opciones disponibles se mostrarán. Obviamente, puede eliminar o comentar todas las propiedades que no desee utilizar.

Traducción a idiomas distintos al Inglés

Como se describe arriba, la propiedad cLanguage permite cambiar el idioma en el que aparecen todos los cuadros de diálogo, formas, barra e información sobre herramientas.

El idioma predeterminado es Inglés y actualmente tenemos disponibles: Inglés, Portugués, Español, Alemán, Griego, Turco, Checo, Persa, Arabe, Italiano, Indonesio y Polaco.

Para configurar el idioma, puede pasar el nombre del idioma en inglés o en idioma local, por ejemplo, para cambiar al idioma al Español:

loPreview.cLanguage = "SPANISH"
ó
loPreview.cLanguage = "ESPAÑOL"

Tiene dos formas para cambiar el idioma predeterminado:
  1. Abra el proyecto FoxyPreviewer, examine la tabla FoxyPreviewer_DefaultSettings, busque el registro que contiene la propiedad "cLanguage", reemplacelo con el idioma deseado y vuelva a compilar el proyecto
  2. Ejecute una vez un informe de FoxyPreviewer. Esto creará la tabla de configuración FoxyPreviewerSettings.dbf y guárdela en la misma carpeta que guardó FoxyPreviewer.App. Examine la tabla FoxyPreviewerSettings.dbf, busque el registro que contiene la propiedad "cLanguage", reemplacelo con el idioma deseado. A continuación, asegúrese de distribuir este archivo y guardarlo en la misma carpeta de FoxyPreviewer.App.
Distribución

FoxyPreviewer consiste en un conjunto de utilidades separadas, que fueron adaptadas para trabajar conjuntamente. Estos archivos incluyen archivos de clases, PRGs, imágenes, archivos DLL y de encabezado.

A fin de simplificar la distribución y evitar agregar muchos archivos individuales a su proyecto, todos los archivos relacionados han sido compilados en un único archivo .APP: FoxyPreviewer.App
  1. Modo simplificado:
  2. Sólo guarde el archivo FoxyPreviewer.App en algún lugar del disco LOCAL, en un lugar que lo encuentre su archivo ejecutable. Asegúrese de hacer "SET PATH" incluyendo esa carpeta. No incluya este archivo en el proyecto. Si desea incluirlo, asegurese de marcar este archivo como "excluido"
  3. Modo Mejorado:
  4. Guarde el archivo FoxyPreviewer.App en la misma carpeta que tiene su EXE o archivos Report*.App. Agregue a su proyecto principal solo el archivo: FOXYPREVIEWERCALLER.PRG
El uso es exactamente el mismo como si estuviera utilizando el PRG, la única diferencia es que en lugar iniciar la clase FoxyPreviewer directamente, se podrá acceder a la clase auxiliar creada e incluida en el archivo EXE.

Esto era necesario para permitir a FoxyPreviewer acceder a los archivos FRX desde su EXE. Por ser una biblioteca externa, FoxyPreviewer.App no puede acceder directamente los FRXs que se encuentran en el archivo EXE. Esa es la razón por lo que les pido que incluyan el archivo auxiliar FoxyPreviewerCaller.Prg en el archivo EXE. De este modo, la clase auxiliar está dentro de su EXE, y puede acceder a sus FRXs y pasarlos a la clase Previewer.

Detrás de escena, esta clase auxiliar almacena una copia de las clases FRX desde su EXE en un archivo temporal, que es utilizado por FoxyPreviewer. Esta clase auxiliar realiza la limpieza necesaria y elimina los archivos temporales. Todas las propiedades disponibles en la clase principal están disponibles en la auxiliar, por lo que podrá utilizar de la misma manera:

SET PROCEDURE TO FoxyPreviewerCaller.prg ADDITIVE 

LOCAL loReport as "FoxyPreviewerCaller" OF "FoxyPreviewerCaller.Prg"
loReport = CREATEOBJECT("FoxyPreviewerCaller")

WITH loReport as ReportHelper
  .AddReport("Sample.frx", "RANGE 1,1 NODIALOG")
  .RunReport()

  DO CASE
    CASE .lPrinted 
      MESSAGEBOX("El informe fue impreso !",64, "Estado del informe")
    CASE .lSaved
      MESSAGEBOX("El informe fue guardado en el archivo:" + CHR(13) + .cDestFile,;
      64, ;
      "Estado del informe")
    OTHERWISE
      MESSAGEBOX("La vista previa del informe se cerro sin imprimir ni guardar",48, "Estado del informe")
  ENDCASE
ENDWITH
Si no desea utilizar un archivo independiente .APP, puede tener FoxyPreviewer incluido en el proyecto normalmente

Asegúrese de incluir en su proyecto todas las clases, VCX/VCT, imágenes, archivos de encabezado (*.H), los formularios de diálogo, el archivo FoxyPreviewer.Prg y compilelo. Eso es todo.
  • pr_ExcelListener.vcx
  • pr_PDFx.vcx
  • pr_RtfListener.vcx
  • GdiPlus.vcx
  • _ReportListener.vcx
  • _FRXCursor.vcx
  • FoxyPreviewer.prg
  • FoxPro_Reporting.H
  • FoxyPreviewer.H
  • FrxPreview.H
  • GdiPlus.H
  • GdiPlus_locs.H
  • HPDF_consts.H
  • ReportListeners.H
  • ReportListeners_Locs.H
  • WinCrypt.H
  • _FrxCursor.H
  • _Reports.H
  • LibHPDF.dll
  • FoxyPreviewer_Locs.dbf
  • FoxyPreviewer_DefaultSettings.dbf
  • PR_Settings.SCX
  • PR_SendMail.SCX
  • PR_SendMail2.SCX
  • PR_Search.SCX
  • pr_IMAGES.BMP
  • pr_Bottom.BMP
  • pr_Close.BMP
  • pr_Close2.BMP
  • pr_Excel.BMP
  • pr_GoToPage.BMP
  • pr_Html.BMP
  • pr_Img.BMP
  • pr_Locate.BMP
  • pr_Mail.BMP
  • pr_Next.BMP
  • pr_Pdf.BMP
  • pr_Previous.BMP
  • pr_Print.BMP
  • pr_PrintPref.BMP
  • pr_Save.BMP
  • pr_Top.BMP
  • pr_Word.BMP
  • WWrite.ico
Utilizando la libreta de direcciones para enviar mensajes de correo electónico



El formulario de la libreta de dirección contiene una cuadrícula que trae todos los campos proporcionados por su cursor o tabla, así que por favor asegúrese de enviar sólo los campos que desea que aparezca. La cuadrícula trae algunas facilidades:
  • Ordenar Columna haciendo doble clic en el encabezado de columna (gracias a Paul Mrozovsky, con su clase RCS Grid reorder)
  • El campo de búsqueda se puede cambiar haciendo clic derecho en el encabezado de columna
  • Seleccionar todas las direcciones, o invertir las selecciones, haciendo clic en el encabezado de la primera columna
Hay que crear un cursor o tabla, que contenga un campo obligatorio llamado "email" y establecer una propiedad en el objeto FoxyPreviewer indicando el nombre o alias del cursor, o la ruta de acceso a la tabla.

El siguiente comando crea una tabla desde la tabla de Customer que viene con VFP, y agrega el campo "email", y genera la libreta de direcciones de arriba:

* Creando una tabla con la libreta de direcciones
SELECT CAST(LOWER(GETWORDNUM(Contact, 1, " "))+";@vfp4.com" AS C(30)) As email, * ;
  FROM (_samples + '\data\customer') ;
  WHERE .T. INTO TABLE c:\Test2 READWRITE

El siguiente paso es decirle a FoxyPreviewer el nombre de la tabla.
  • Para los usuarios del modo simplificado, utilice el objeto _Screen.oFoxyPreviewer:
  • * Configuración de las propiedades globales
    DO FoxyPrevieweer.App
    _Screen.oFoxyPreviewer.cAdressTable  = "c:\Test2.dbf"
    _Screen.oFoxyPreviewer.cAdressSearch = "Contacto"                && Opcional
    _Screen.oFoxyPreviewer.cEmailTo      = "test@foxypreviewer.org"  && Opcional
    REPORT FORM YourReport PREVIEW
  • Para los usuarios del modo mejorado:
  • LOCAL loReport as "PreviewHelper" OF ("FoxyPreviewer.App")
    loReport = CREATEOBJECT("PreviewHelper")
    WITH loReport as ReportHelper
      .cAdressTable  = "c:\Test2.dbf"
      .cAdressSearch = "Contact"
      .AddReport(_Samples + "\Solution\Reports\percent.frx")
      .RunReport()
    ENDWITH


Como indica el cuadro de diálogo imagen anterior, primero se debe configurar el correo electrónico SMTP. Esto puede hacerse mediante el cuadro de diálogo de configuración, en la ficha correo electrónico asegúrese de seleccionar HTML CDO y proporcionar la información de su servidor SMTP.

Obviamente, puede también configurar las propiedades directamente, o incluso modificar la tabla de configuración, proporcionando la información necesaria.

Consulte la documentación de FoxyPreviewer para obtener más información acerca de las propiedades necesarias para la configuración de su correo electrónico. Hay varias imágenes disponibles para facilitarle las cosas.

Preguntas más frecuentes (FAQs)

¿Cómo puedo generar un archivo .PDF (o cualquier otro tipo disponible) sin necesidad de abrir la ventana de vista previa?

El truco consiste en utilizar la propiedad cDestFile. FoxyPreviewer generará la salida de acuerdo a la extensión de archivo que se pasa a dicha propiedad.
SET PROCEDURE TO LOCFILE("FoxyPreviewer.App") ADDITIVE 
LOCAL loReport as "PreviewHelper" OF "FoxyPreviewer.App" 
loReport = CREATEOBJECT("PreviewHelper") 
WITH loReport as ReportHelper 
  .AddReport(_Samples + "\Solution\Reports\percent.frx", "NODIALOG") 
  .cDestFile = "c:\Teste1.pdf"  && Use para crear una salida din vista previa
  .RunReport() 
ENDWITH 
loReport = NULL 
RUN /N Explorer.Exe c:\Teste1.pdf 

La barra de herramientas de la vista previa de impresión es visible, pero todos los botones están deshabilitados en mi formulario de nivel superior. ¿Cómo se soluciona?

Lamentablemente, hay un error en VFP9 SP2, que hace que todas las barras de herramientas dentro de formularios de nivel superior no responde. Afortunadamente, MS está distribuyendo un hotfix para el SP2, que corrige este problema.

Descargue la última revisión acumulativa - KB968409 de http://code.msdn.microsoft.com/kb968409/release/projectreleases.aspx?ReleaseId=2445
Siga cuidadosamente todas las instrucciones proporcionadas en el archivo de texto incluido en la descarga y la barra de herramientas comenzará a trabajar según lo previsto.

La forma más fácil de actualizar su VFP9SP2 con las revisiones más recientes es instalar el "Woody's Runtime Installer", que se puede encontrar aquí: Woody VFP9 SP2 Runtime Installer con todas las revisiones (Rev 7423)

Cuando ejecuto mis informes con FoxyPreviewer a veces aparecen asteriscos "*" en lugar del campo. Esto estaba trabajando normalmente, antes de usar FoxyPreviewer

Esto sucede porque FoxyPreviewer utiliza el modo SET REPORTBEHAVIOR 90, que utiliza GDI+ para representar los textos. Lamentablemente hay una ligera diferencia del tamaño de las cadenas entre estos modos. Para solucionarlo, sólo modifique su informe y agrande ese campo!

No aparece el botón de búsqueda.

No puedo ver las opciones de Guardar como PDF / RTF / XLS al hacer clic en botón Guardar


Incluso configurando correctamente las características que se muestran, puede ocurrir que FoxyPreviewer no pueda cargar todas sus bibliotecas.

Asegúrese de no utilizar la propiedad cDefaultListener. Probablemente esto hará que todo funcione como desee.

El cDefaultListener es solo para usuarios avanzados, usuarios que realmente saben cómo utilizar reportlisteners. Si realmente lo necesita, asegúrese de utilizar una subclase de FoxyListener, que se encuentra en la biblioteca PR_ReportListener.vcx en la carpeta \Sources.

Mi informe es muy grande y no se puede ejecutar con FoxyPreviewer

Desafortunadamente, el sistema de informes de VFP9 tiene un límite de páginas / caracteres para preocesar. En la mayoría de los casos, informes con más de 3000 páginas no funcionan, lanzando el error "Insufficient GDI+ resources". Esto no es una cuestión de FoxyPreviewer. Esta limitación proviene de VFP. Por favor, reduzca el tamaño de su informe, o utilice SET REPORTBEHAVIOR 80 para ejecutar ese informe.

Aparecen caracteres muy pequeños cuando se imprime un informe en una impresora de matriz de puntos

Se trata de una limitación del sistema de informes de VFP9.

Si está utilizando FoxyPreviewer en el modo mejorado, puede configurar la propiedad lUseListener =.F. para ese informe específico. Esto hará que FoxyPreviewer ejecutar el informe en el modo de ReportBehavior 80.

Si está utilizando FoxyPreviewer en el modo simplificado, lamentablemente no hay nada que hacer, excepto:
  • Usar FoxyPreviewer en el modo mejorado para este informe específico
ó
  • Ejecutar este informe mediante SET REPORTBEHAVIOR 80
¿Cómo puedo desactivar FoxyPreviewer?

A veces por algún motivo concreto es necesario desactivar FoxyPreviewer y restablecer la configuración de informes a su estado original. Simplemente ejecute la siguiente línea de código:
DO FOXYPREVIEWER.APP WITH "Release"

No puedo enviar mensajes de correo electrónico

Compruebe cuidadosamente el formulario de "Opciones de configuración".

En algunos equipos las opciones "MAPI" no funcionan, y en su lugar se debe utilizar "CDOSYS". Consulte con su proveedor de servicios SMTP para la configuración correcta.

No se puede exportar a HTML

La salida HTML sólo está disponible para el modo mejorado.

Durante la inicialización de FoxyPreviewer, recibo el error "Could not load the FOXYPREVIEWER report factory"

Esto ocurre porque probablemente está utilizando una versión antigua de ReportOutput.App
Puede obtener una versión actualizada directamente desde VFPX

O puede obtener las fuentes del mismo directamente desde MS y recompilarlo:
Para compilar ReportOutput.App:
  1. Obtenga las fuentes de estos. El mejor lugar es directamente desde sitio Web de MS: http://www.microsoft.com/downloads/en/details.aspx?FamilyId=320B6438-BE76-48C7-A68E-1792E2AA3BF2&displaylang=en
  2. Decargar el archivo .ZIP y descomprimirlo
  3. Vaya a la carpeta ReportOutput. Abra el proyecto ReportOutput.
  4. Volver a compilar el proyecto, siguiendo las sugerencias de Leonid
  5. Utilizar la nueva aplicación en lugar de la original.
Por favor, asegúrese de utilizar la última versión, renombre todas las versiones antiguas que tiene en su equipo.

¿Puedo usar FoxyPreviewer sin el Service Pack 2 de VFP9?

Sí !!! Para ello, sólo necesitará utilizar las versiones más recientes de ReportOutput.App y ReportPreview.App. Por favor, lea el punto anterior para obtener las instrucciones sobre cómo puede obtener esos archivos.



18 comentarios :

  1. hola saludos yo estoy implementado esta excelente herramienta pero a mi maquina funciona bien pero al actualizar la aplicacion en las estaciones de trabajano no funciona aparecen bloquedas las opciones sera que alguien me puede ayudar

    ResponderBorrar
  2. Tienes que instalar el runtime con los ultimos fix, ese es tu problema, busca por internet "VFP9SP2RT runtime all fix" o me das tu email y te lo envio. Saludos
    Jorge Galván
    Caracas-Venezuela

    ResponderBorrar
  3. buen dia ,
    como puedo hacer para que en la opcion "guardar" me proponga un directorio fijo por ejemplo c:\temp ?
    gracias

    ResponderBorrar
  4. De donde puedo bajar el foxpreviewer.app?
    Gracias

    ResponderBorrar
    Respuestas
    1. https://archive.codeplex.com/?p=foxypreviewer

      Borrar
    2. https://archive.codeplex.com/?p=foxypreviewer

      Borrar
  5. Buenas, tardes. Estoy presentando el siguiente problema a veces.
    La previsualizacion es correcta pero cuando imprimo el informe aparecen caracteres enormes como de Caratula. en una sola pagina., como digo frecuentemente, utilizo el Foxy en modo simple y uso VFP9 SP1

    ResponderBorrar
  6. Modificar el interlineado de un parrafo?

    ResponderBorrar
  7. Buenos dias. He compilado mi aplicación a 64bits con VFPa, pero tengo problemas con foxypreviewer. Alguien ha conseguido que funcione a 64 bits?
    Gracias.

    ResponderBorrar
  8. Muy buenas, necesito implementar el envio de mails pero no tengo idea de donde configurar, lo que pongo en la configuración parece que no completa lo necesario para el envio y me da ERROR al tratar de enviar un PDF.
    Será que antes de ejecutar debo definir algo más ??
    Desde ya gracias por la colaboración que me puedan prestar.

    ResponderBorrar
  9. Buenas tardes, tengo implementado un sistema con el foxypreviewer pero algunas usuarios la presentación preliminar y la impresión sale incompleta, o sea, como que mas grande que no cabe en la hoja.
    Pero si lo grabo como PDF u otro formato si está completo.
    Lo raro es que solo falla con un par de pc, las demás no.
    Gracias por su colaboración.

    ResponderBorrar
    Respuestas
    1. estoy buscando la misma respuesta por todos lados, tengo dos casos...y usan ambos Windows 10 Pero yo tengo W10 y funciona perfecto!! me esta volviendo loca esto.

      Borrar
    2. Fredi, Patricia espero les sirva, a mi me paso que solo salia una parte de lo que intentaba imprimir. Lo que encontre fue el "Tipo de Papel" que tenia configurado, lo cambie a carta y todo se imprimio normal. Esto lo hice en el boton "Preferencia de impresion" de la barra de herramientas --> Preferencias --> opciones avanzadas en esta parte es donde cambie el tipo de papel. Espero les sirva. Saludos.

      Borrar
  10. En fpw26 existe alguna forma de generar el reporte directamente en PDF ?

    ResponderBorrar
  11. En Fpw26 existe alguna forma de generar un reporte en PDF asignando el nombre del reporte y ruta, directamente desde el código del programa?

    ResponderBorrar
  12. Saludos a todos
    Tengo una aplicación desarrollada en FPW26 compilada en 5.0 y en producción actualmente.
    Tengo una serie de informes que se ejecutan con REPORT FORM y quiero saber si se pueden generar en PDF directamente desde el programa, asignandole el nombre y la ruta correspondiente. Muchas gracias

    ResponderBorrar
  13. Hola, estoy trabajando con VFP Advanced (x64) y FoxyPreviewer a 64x,pero no he podido cambiar la configuración del FoxyPreviewer:
    Cannot update the cursor FP_SETTINGS, since it is read-only.
    Por favor si alguien sabe como puedo quitar que sea de solo lectura.
    Gracias

    ResponderBorrar
  14. hola, estoy teniendo un inconveniente con el modo mejorado.
    El tema es así, tengo que hace un pdf por cliente entonces ponto en un loop esto:
    nombre_reporte = "trimestral_varias_email.frx"
    MODO ="PDF"
    ruta_del_pdf = "C:\TEMP\GENERACION_PDFS\" + nombre_cliente + "~" + ALLTRIM(ID) + ".PDF"
    LOREPORT = CREATEOBJECT("PreviewHelper")
    WITH LOREPORT AS REPORTHELPER
    .ADDREPORT(nombre_reporte, "NODIALOG")
    .CDESTFILE = ruta_del_pdf
    IF LEN(ALLTRIM(.CDESTFILE))>0
    .RUNREPORT()
    ENDIF
    .Clearcache
    ENDWITH
    LOREPORT.REPORtreleased()
    LOREPORT = NULL
    RELEASE LOREPORT
    SYS(1104)

    el problema es que mientras los está haciendo, el ejecutable empieza a ocupar más y más memoria RAM. Y cuando llega a los 2gb de RAM, colapsa el programa y se va.
    No se cómo solucionar este problema.
    Muchas gracias

    ResponderBorrar

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.