Bienvenido y disfruta el nuevo diseño del sitio web.... agradecería me envíes tus comentarios acerca de los cambios realizados

Para descargar cualquier archivo es necesario estar registrado y hacer click en el titulo del archivo a descargar

Conocer las dimensiones de un gráfica con GDI+

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Utilizaremos la clase de GDI+ que viene con VFP9
para conocer las dimensiones de una imagen
.


oGDI =
Newobject("gpbitmap",
(
Home()+"ffc\_gdiplus.vcx"))


oGDI.CreateFromFile(GetFile("jpg"),
.F.)


? oGDI.ImageHeight

? oGDI.ImageWidth



 



Por: David Amador T

Capturar los eventos del Mouse en el Screen utilizando BindEvent

Visual Fox Pro, Trucos Comentarios ( 0 ) »
El BindEvents es una excelente característica de
las nuevas versiones de VFP; ahora veremos como utilizarla para capturar el
evento DobleClick del Mouse en el Screen de VFP.


Public
oHnd

oHnd =
Newobject("ScreenMov")



Bindevent
(_Screen,
"DblClick",
oHnd,
"DblClick")



Define Class
ScreenMov
As Session

   
Procedure DblClick

       
Wait Window
"Doble
Click"

   
Endproc

EndDefine


Por: David Amador T

Insertando valores DateTime con el VFP OLEDB Provider

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Aquí tiene la forma de actualizar los campos
DateTime cuando utilizamos el OleDB Provider para acceder a tablas de VFP


oConn =
CreateObject("ADODB.Connection")


cRutaDatos = "C:\Datos\TablasLibres"



oConn.
Open("Provider=VFPOLEDB.1;"
+ ;

        "Data Source="
+ cRutaDatos + ;

       
";Collating Sequence=MACHINE")


oConn.Execute("Create
Table Prueba (CmpDateT T)"
)

oConn.Execute(
"Insert
Into Prueba Values (DATETIME())"
)

oConn.Execute(
"Insert
Into Prueba Values ({^2006-10-10 11:11:11 PM})"
)

 

oConn.
Close()



Release oConn





Por: David Amador T

Campos calculados en un grid

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Un ejemplo muy sencillo de como realizar columnas
calculadas en un Grid


Create Cursor
Datos (Numero i, Veces i,
nTotal i)



Insert Into
Datos
Values
(8,0,0)


Insert Into
Datos
Values
(8,2,0)


Insert Into
Datos
Values
(8,5,0)


Insert Into
Datos
Values
(8,1,0)


Insert Into
Datos
Values
(8,0,0)


Insert Into
Datos
Values
(8,3,0)



Go Top In
Datos



Public
oForm

oForm =
Newobject("form")

oForm.
Width
= 400

oForm.
Height
= 400



With
oForm

   
.
AddObject("MiGrid",
"Grid")

   
With
.MiGrid

       
.
Visible
= .T.

       
.
Top
= 5

       
.
Left
= 5

       
.
Width
= 390

       
.
Height
= 390



       
.
RecordSource
=
"Datos"


       
.Column3.
ControlSource
=
"Numero + Veces"

   
Endwith

Endwith



oForm.
Show




Por: David Amador T

Convertir imágenes en otros formato utilizando la clase GDI+ de VFP 9

Visual Fox Pro, Trucos Comentarios ( 0 ) »
En el ejemplo convertiremos un gráfica a formato
bmp, jpg, tif, gif y png



Local
cOrigen, cDestino


cOrigen = GetPict()

cDestino =
JustPath(cOrigen)
+
"\_"
+
JustStem(cOrigen)


oImg = NewObject("GpImage",
Home()
+
"ffc/_gdiplus.vcx")



With
oImg

   
.CreateFromFile(cOrigen)

   
.SaveToFile(cDestino +

".jpg","image/jpeg")

   
.SaveToFile(cDestino +

".bmp","image/bmp")

   
.SaveToFile(cDestino +

".tif","image/tiff")

   
.SaveToFile(cDestino +

".gif","image/gif")

   
.SaveToFile(cDestino +

".png","image/png")


EndWith


 


Por: David Amador T

Obtener la configuración que el usuario tiene en OutLook

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Usted puede conocer la configuración que tiene
establecida en usuario en OutLook de manera sencilla



oCDO =
Createobject("CDO.Configuration")



For Each
oField
In
oCDO.Fields

   
If
!"sendpassword"
$ oField.Name


       
? oField.Name
+
" "+Transform(oField.Value)

   
Endif

Next


Release oCDO


 


Por: David Amador T

Insertar cada línea de un archivo en una tabla

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Este es un buen truco; leemos un archivos y vamos
tomando cada línea del archivo e insertándola en una tabla DBF


Set Memowidth To
8000

cArchivo =
GetFile()



If
!Empty(cArchivo)

    Create Cursor
Datos (TxtLineas m)

   
cText =
FileToStr(cArchivo)

   
nLineas =
Memlines(cText)



   
For
i=1
To
nLineas

       
Insert Into
Datos
Values(Mline(cText,i))

   
Endfor

EndIf


Por: David Amador T

Utilizar una clase que se encuentra compilada en un EXE

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Creo que este es uno de los buenos trucos;
imagínate que tienes una clase ya creada en un EXE y deseas utilizarla, aquí
tienes el código de como hacerlo.


Set ClassLib To
MiClase.Vcx
In
Archivo.Exe
Additive




Por: David Amador T

Convirtiendo reporte en Imagenes en VFP 9

Visual Fox Pro, Trucos Comentarios ( 0 ) »
VFP 9 trajo muchas características en su nuevo ReportListener el cual permite mejor interacción y personalización de los
reportes.



Aquí veremos como convertimos un reporte en imágenes BMP


Local
oListener
As ReportListener,
nPageIndex

oListener =

Createobject
("ReportListener")

oListener.
ListenerType
= 3


cRutaReporte = Home(2)+"Solution\Reports\invoice.frx"



Report Form
(cRutaReporte)
Preview Object
oListener



For
nPageIndex=1
To
oListener.PageTotal

    cOutputFile =
"c:\tmp"+Trans(nPageIndex)+".bmp"

   
oListener.OutputPage(nPageIndex,;

   
cOutputFile, 105, 0,0,768,1024)

&& 105=bitmap


Next


 





 


Por: David Amador T

Convertir constantes de VB a VFP

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Es muy frecuente que encontremos código de VB que
queramos convertirlo a VFP; una de las cosas que al principio cuesta dificultad
son la gran cantidad de constantes que se usan en VB y que por lo general no
sabemos como expresarlas en VFP; aquí tienes una forma de convertir las
constantes de VB a VFP.

Veamos una
constante en VB, el valor de la misma está dada en hexadecimal


Public Const INTERNET_FLAG_RAW_DATA =
&H40000000


Y ahora en VFP



#DEFINE
INTERNET_FLAG_RAW_DATA 0x40000000



Debes reemplazar Public Const por
#DEFINE

y el valor reemplazando &H con 0x


Por: David Amador T

Conocer el formato de moneda a través de API

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Imagínate que quieras mostrar en el formato de
moneda dependiendo la configuración regional de tu PC; pues aquí está como
hacerlo a través de API.


Declare Integer
GetCurrencyFormat
In
WIN32API ;

    Integer
Locale,
Integer
dwFlags,;

   
String
lpValue,
String
lpFormat,;

   
String
@lpCurrencyStr,;

   
Integer
cchCurrency



cBuffer =
Replicate(Chr(0),255)

=GetCurrencyFormat(0,0,
[5.32],0,@cBuffer,255)



Buffer
=
Chrtran(cBuffer,
Chr(0),[])


Messagebox
(cBuffer)








Por: David Amador T

Agregar datos de un Array a una tabla

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Un truquito básico pero muy útil


Dimension
aDatos[10,1]



aDatos
[1]
=
"UNO"


aDatos
[2]
=
"DOS"


aDatos
[3]
=
"TRES"


aDatos
[4]
=
"CUATRO"


aDatos
[5]
=
"....."


aDatos
[6]
=
"DDDDDD"


aDatos
[7]
=
"RRRRRR"


aDatos
[8]
=
"HHHHHH"


aDatos
[9]
=
"....."


aDatos
[10]
=
"FFFFFF"



Create Cursor
MisDatos (Txt C(12))


Append From Array
aDatos


Browse






Por: David Amador T

Formularios Anclables en VFP 9

Visual Fox Pro, Trucos Comentarios ( 0 ) »
De las mejores características de VFP 9


Public
oform1, oForm2


oform1=Newobject("Form1")

oform1.
Show

Return


Define Class Form1
As Form

   
DoCreate
= .T.

   
Caption
=
"Formularios Anclables"

   
Dockable
= 1

   
Name
=
"Form1"



   
Add Object
command1
As CommandButton
;

       
With Top
= 73, ;

       
Left
= 103, ;

       
Height
= 27, ;

       
Width
= 140, ;

       
Caption
=
"Mostrar From anclado",
;

       
Name
=
"Command1"



   
Procedure
command1.Click

   
    oForm2 =
Newobject([Form2])

       
oForm2.
Show()

       
oForm2.
Dock(4,
Thisform)

   
EndProc

EndDefine

 

Define Class
Form2
As Form

   
DoCreate
= .T.

   
Caption
=
"Otro formulario"

   
Dockable
= 1

   
Name
=
"Form2"


   
Add Object
edit1
As EditBox With
;

       
Height
= 152, ;

       
Left
= 136, ;

       
Top
= 29, ;

       
Width
= 155, ;

       
Name
=
"Edit1"


EndDefine


Por: David Amador T

Vincular una tabla DBF a una base de datos de Access

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Aquí tienes la forma de vincular una tabla DBF a
una base de datos de Access a través de código; para eso utilizaremos ADOX.
 


oCat =
CreateObject("ADOX.Catalog")

oTab =
CreateObject("ADOX.Table")


cRutaDB = "Provider=Microsoft.Jet.OLEDB.4.0;"
+ ;

            "Data Source=C:\BaseDatos.mdb;"



* Abro el catálogo


oCat.ActiveConnection = cRuta



* Creo la nueva tabla


With
oTab

   
.
Name
=
"Tabla Vinculada de dBASE"

   
.ParentCatalog = oCat


EndWith



* Establezco las propiedades para crear el vínculo con el archivo de dBASE


With
oTab

    * Indicamos
solamente la carpeta donde se encuentra la tabla

   
.Properties("Jet
OLEDB:Link Datasource"
) =
"C:\"

   
.Properties("Jet
OLEDB:Remote Table Name"
) =
"vacunas#dbf"

   
.Properties("Jet
OLEDB:Create Link"
) = .T.

   
.Properties(
"Jet
OLEDB:Link Provider String"
) =
"dBASE 5.0;"


EndWith



* Añado la tabla a la colección Tables


oCat.
Tables.Append(oTbl)


oCat = Null



=
MessageBox("Se
ha vinculado correctamente el archivo."
)


 


Por: David Amador T

Cambiar el comportamiento de algunas funciones de VFP

Visual Fox Pro, Trucos Comentarios ( 0 ) »
¿Quisieras evitar que se ejecuten algunas
funciones propias de VFP o darles un comportamiento diferente?; Por ejemplo que
cuando invoques un MessageBox te muestre un Wait Window o una formulario tuyo
con características similares o simplemente que no se muestre.


En el siguiente ejemplo el MessageBox se
reemplazará por el Wait Window



#
Define Messagebox
NoMsg


=Messagebox("Esto
es un mensaje"
)



Procedure NoMsg(x,y,z)

    Wait Window
x


EndProc






Y si deseas que no muestre nada sólo quita el Wait Window y listo.



Otro ejemplo; en este vamos hacer que la función
ALLTRIM convierta enseguida a mayúsculas



#Define Alltrim
MiAlltrim


?Alltrim("
Esto es un mensaje "
)



Procedure MiAlltrim(cTxt)

   
Return Rtrim(ltrim(Upper(cTxt)))


EndProc




Tengamos en cuenta que dentro del procedimiento no
podemos volver a llamar a la función ALLTRIM puesto que se presentaría un
llamado recursivo a la misma función (MiAlltrim) a menos que utilice

#Undefine
Alltrim

antes del RETURN.



Otro ejemplo básico, vamos a evitar que se utilice
la función VAL



#Define Val
NoxVal


? Val("10")



Procedure NoxVal(cTxt)

    Return
"Función no permitida"


EndProc




Bueno, puede hacer muchas cosas, sólo es cuestión
de imaginación y necesidades


Por: David Amador T