FoxPress,FoxPluss

FoxPress,FoxPluss

domingo, 17 de abril de 2011

ZIP en VFP

 
 De esta manera podremos comprimir / descomprimir en formato ZIP desde nuestras aplicaciones.
oZip = createobject("MoleZip.ZipFile")
oZip.Create("MoleZip.oZip")
oZip.PackInplace( "Actudat.exe", ; && Nombre del fichero 
                  "Actudat.exe", ; && Nombre del registro en el Zip
                    9 ) && Nivel de compresión (de 0 a 9)

oZip.Close

oZip.Open("MoleZip.oZip")
oLista = oZip.Enumerate()
do while oLista.Next()
oZip.Extract( oLista.value, ; && Nombre del registro en el oZip
                      "_" + oLista.value ) && Nombre del fichero a grabar
enddo
oZip.Close
release oZip

MoleZip es un componente COM/ActiveX freeware y se lo puede descargar de la página:http://molestudio.com/tools/molezip
Nota: Fuente: Revista FoxPress, Octubre de 2003, http://www.fpress.com

Visual FoxPro con ADO contra PostreSQL utilizando procedimientos

Ejemplo de gestión de clientes, que muestra como utilizar una base de datos en PostgreSQL con ADO y ejecutando prodecimientos almacenados.
Desarrollado en Visual FoxPro 9.


Descargar

viernes, 15 de abril de 2011

Visual FoxPro como filosofía de programación

Enviado por Moises Palanca 
Vayamos al fondo de la cuestión, Visual FoxPro no es ni más ni menos que un Framework desarrollado en C y orientado al tratamiento de datos, son miles de líneas de código depuradas trás años de experiencia obtenida desde el própio corazon de las empresas, buscando dar soluciones especificas a toda la problemática asociada a la creación de aplicaciones cuya principal misión es darle forma a determinados volúmenes de información.

Por lo tanto no es más ni menos que una filosofía de trabajo, ello lo demuestrán funciones como STREXTRACT o CHRTRAN, creadas para tratar el texto de una forma en la que pocos, por no decir ningún lenguaje, permiten en su própio código.

Las simples funciones incorporadas en la VFP TOOLKIT para .NET son suficientes para ser programadores de C# o Visual Basic .NET más eficientes que cualquier otro.

Sólo tenemos que seguir alimentando cualquier otro lenguaje con la filosofía de Visual FoxPro y este nunca morirá.

Convirtamos a Visual FoxPro en una metodolgía de programación e utilicemos sus comandos y funciones, métodos y propiedades gráficas como seudocódigo o métodos en otros lenguajes para poder aplicar en el papel esta forma de trabajo.

En mi caso estoy aprendiendo C#, utilizando el Sharp Develop (querido Microsoft; ni contigo ni sin ti, tienen mis males remedio. Contigo porque me matas, sin ti porque me muero... de hambre).

Me he creado una clase con las funciones más útiles de las VFP Toolkit, así como aquellas que son vitales si programamos para tener un Framework llamado Visual FoxPro.

También estoy desarrollando clases de base de Visual FoxPro relacionadas con los objetos gráficos (grids, combos, listbox, etc.) en C#.

Hermanos foxeros podemos ser mejores programadores (en cualquier lenguaje) que otros simplemente por aplicar la FILOSOFÍA DE VISUAL FOXPRO.

Si alguno de vosotros está interesado en participar en este proyecto de tener un framework en C# basado en Visual FoxPro y quiere colaborar con sus aportaciones de código, etc., puede ponerse en contacto conmigo en
moisespalanca@gmail.com

jueves, 14 de abril de 2011

Usando el CTL32 ProgressBar de FoxyPreviewer

Traducción de una entrada del Blog de Cesar Chalom, donde nos muestra como utilizar la clase CTL32 ProgressBar de Carlos Alloatti, desde su FoxyPreviewer.

Usando el CTL32 ProgressBar de FoxyPreviewer

Artículo original: Using the CTL32 ProgressBar from FoxyPreviewer (http://weblogs.foxite.com/vfpimaging/archive/2011/01/21/13664.aspx)
Autor: Cesar Chalom (http://weblogs.foxite.com/vfpimaging)
Traducido por: Luis Maria Guayán (http://www.luismariaguayan.com.ar/articulos.htm)
Para: PortalFox (http://www.portalfox.com/)

FoxyPreviewer.App es una colección de clases. En su interior hay varias clases, que se pueden acceder directamente usando VFP.
Recientemente he recibido el requerimiento de mostrar como podria utilizar el CTL32 ProgressBar directamente.
!Eso es realmente simple! El comando es NEWOBJECT(), que nos permite acceder a las clases desde un archivo EXE o APP externo.
En primer lugar el autor de esta joya, el CTL32 ProgressBar es Carlos Alloatti. Para obtener la información completa sobre cómo usarlo, por favor vaya directamente al sitio web de CTL32: http://www.ctl32.com.ar/
Uso:
=Dotherm(90, "Caption", "TitleBar") && Muestra la barra de progreso normal con el 90%
=DoTherm(-1, "Caption", "TitleBar") && El valor -1 en el primer parámetro muestra el efecto de marquesina
=DoTherm() && Desactiva la barra de progreso
Guardar el código de abajo como DOTHERM.PRG
* DOTHERM.PRG
* =DoTherm(90, "Texto label", "Titulo")
* =DoTherm(-1, "Teste2", "Titulo") && Continuo
* =DoTherm() && Desactiva

LPARAMETERS tnPercent, tcLabelText, tcTitleText
IF NOT PEMSTATUS(_SCREEN , "oThermForm", 5)
  _SCREEN.ADDPROPERTY("oThermForm", "")
ENDIF
IF EMPTY(tnPercent)
  TRY
    _SCREEN.oThermForm.RELEASE()
  CATCH
  ENDTRY
  _SCREEN.oThermForm = NULL
  RETURN
ENDIF


IF TYPE("_Screen.oThermForm.Therm") <> "O"
  DO CreateTherm
ENDIF
LOCAL loThermForm AS FORM
loThermForm = _SCREEN.oThermForm
IF NOT EMPTY(tcLabelText)
  loThermForm.ThermLabel.CAPTION = tcLabelText
ENDIF
IF NOT EMPTY(tcTitleText)
  loThermForm.CAPTION = tcTitleText
ENDIF
IF tnPercent = -1
  loThermForm.Therm.Marquee = .T.
ELSE
  IF loThermForm.Therm.Marquee = .T.
    loThermForm.Therm.Marquee = .F.
  ENDIF
  loThermForm.Therm.VALUE = tnPercent
ENDIF
loThermForm.VISIBLE = .T.

RETURN


PROCEDURE CreateTherm
  LOCAL loForm AS FORM
  loForm = CREATEOBJECT("FORM")
  _SCREEN.oThermForm = loForm
  LOCAL lnBorder, liThermHeight, liThermWidth, liThermTop, liThermLeft
  lnBorder = 7
  WITH loForm AS FORM
    .SCALEMODE = 3 && Pixels
    .HEIGHT = 48
    .HALFHEIGHTCAPTION = .T.
    .WIDTH = 300
    .AUTOCENTER = .T.
    .BORDERSTYLE = 3 && Fixed dialog
    .CONTROLBOX = .F.
    .CLOSABLE = .F.
    .MAXBUTTON = .F.
    .MINBUTTON = .F.
    .MOVABLE = .F.
    .ALWAYSONTOP = .T.
    .ALLOWOUTPUT = .F.

    .NEWOBJECT("Therm","ctl32_progressbar", "PR_ctl32_progressbar.vcx", LOCFILE("FoxyPreviewer.app"))
    .NEWOBJECT("ThermLabel", "Label")

    .ThermLabel.VISIBLE = .T.
    .ThermLabel.FONTBOLD = .T.
    .ThermLabel.TOP = 4
    .ThermLabel.WIDTH = .WIDTH - (lnBorder * 2)
    .ThermLabel.ALIGNMENT = 2 && Center
    liThermHeight = .HEIGHT - (lnBorder * 2) - .ThermLabel.HEIGHT
    liThermWidth = .WIDTH - (lnBorder * 2)
    .VISIBLE = .T.
  ENDWITH
  liThermTop = lnBorder + 20
  liThermLeft = lnBorder
  WITH loForm.Therm
    .TOP = liThermTop
    .LEFT = liThermLeft
    .HEIGHT = liThermHeight
    .WIDTH = liThermWidth
    .MarqueeSpeed = 30
    .MarqueeAnimationSpeed = 30
    .VISIBLE = .T.
    .CAPTION = ""
  ENDWITH
ENDPROC

martes, 12 de abril de 2011

Comprimir en un archivo autoextraible desde VFP

Cordial saludo, para todas aquellas personas que como yo buscamos la forma de comprimir archivos directamente desde VFP y que adicionalmente desea que el archivo empaquetado sea un autoextraibel y si adicionalmente deseas ir actualizando este autoextrible, esta herramienta es una solucion conveniente y que recoge todas tus necesidades.
1. Crea desde el Winrar un archivo autoextraible, configurando lo que desea que haga tu archivo al momento de desempaquetar (ej. nombre de la pantalla, preguntas de aceptacion, forma de escritura o sobreescritura, pantallas de licencia, ruta donde deseas que desempaquete, icono para el archivo, programas antes y despues de la ejecucion, etc.)
Luego de configurar en Winrar el autoextraible presiona el boton "hacer esta configuracion por defecto".
2. Listo ya tienes tu plantilla de archivo autoextraible configurado. Ahora ya puedes utilizar el comando desde el VFP.
3. Copia de la carpeta de Winrar que se encuentra en la carpeta "Archivos de programa" de tu Windows, los archivos rar.exe y default.sfx. Ojo estos dos archivos deben estar en el directorio que por defecto se va a empaquetar.
4. Utiliza desde VFP este comando.
* con este comando actualiza los archivos que fueron enviados de 
* tu plantilla hasta la ultima fecha de la compresion.
run /n7 rar f mipaquete.exe 

* crea un nuevo archivo autoextraible(sfx). con los parametros 
* establecido en la plantilla.
run /n7 rar a -sfx mypaquete  
Estos comandos tienen muchos mas parametros (ej. excluir o adicionar carpetas o archivos, al archivo empaquetado); estos parametros los encuentras en la misma carpeta de Winrar en el archivo rar.txt.
Espero que le des buen uso a esta potentisima herramienta.
William Zuluaga

lunes, 11 de abril de 2011

Nuevo FoxCharts 1.30

Publicado a la‎(s)‎ 14/03/2011 16:03 por Luis Maria Guayan   [ actualizado el 14/03/2011]


Nueva versión de la excelente herramienta gráfica FoxCharts, compartida por Cesar Chalom para toda la comunidad de Visual FoxPro.

Esta nueva versión tiene soporte para gráficos XY con la posibilidad de un segundo eje Y, que se suman a los tipos de gráficos ya soportados (líneas, puntos, barras, tortas, áreas, XY; de 2 y 3 dimensiones).

Pueden descargar la última versión de FoxCharts haciendo clic aquí

domingo, 10 de abril de 2011

Agregar una imagen a Word desde VFP

Artículo de la base de conocimientos de Microsoft de como poder añadir una imagen a un documento Microsoft Word 2003 ó 2007 utilizando Visual FoxPro.
El enlace al artículo original en la Base de Conocimientos de Microsoft es el siguiente:
-- Using Microsoft Visual FoxPro to add images to a Microsoft Word 2003 or 2007 InLineShapes collection --


El siguiente código es el que alli se encuentra publicado, y evita el posible mensaje de error: "OLE Idispatch exception code 0 from Microsoft Word: This is not a valid file name."
PUBLIC oW AS WORD.APPLICATION, ;
  lcBMP AS STRING, liVFPWinState AS INTEGER

*-- Almacena la propiedad _SCREEN.WindowState y minimiza
liVFPWinState = _SCREEN.WINDOWSTATE
_SCREEN.WINDOWSTATE= 1
oW = CREATEOBJECT( 'Word.Application' )

*-- Cambie la ruta del archivo BMP si es necesario
lcBMP = _SAMPLES + '\TASTRADE\BITMAPS\BEVERAGE.BMP'
WITH oW AS WORD.APPLICATION
  .WINDOWSTATE = 1 && wdWindowStateMaximize
  .VISIBLE = 1
  .Documents.ADD
  .APPLICATION.ACTIVATE
  WITH .ActiveDocument.PageSetup AS WORD.PageSetup
    .TopMargin = 12.25
    .BottomMargin = 12.25
    .LeftMargin = 12.25
    .RightMargin = 12.25
  ENDWITH
  .SELECTION.InlineShapes.AddPicture( lcBMP, .F., .T. )
  .SELECTION.EndKey( 6 )
  .SELECTION.MoveLeft( 1, 1, 1 )
  .SELECTION.InlineShapes( 1 ).WIDTH = 190
  .SELECTION.InlineShapes( 1 ).HEIGHT = 210
  .SELECTION.EndKey( 6 )
  .SELECTION.HomeKey( 6 ) && Va al inicio del documento
  =INKEY( 5 ) && Espera 5 segundos
  .QUIT( 0 ) && Sale sin guardar. Parámetro = -1 guarda documento
ENDWITH

*-- Restaura _SCREEN
_SCREEN.WINDOWSTATE = liVFPWinState