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

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

Copiar a CD con Windows XP desde VFP

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Puedes utilizar un poco la característica de
Windows XP que le permite grabar a CD, para eso lo que debes hacer es copiar en
un directorio especial que tiene Windows para ello y luego indicarle al XP que
copie los archivos.

cDir =
GETENV("userprofile")+"\Configuración
local\Application Data\Microsoft\CD Burning\"



cFile = "c:\DatosXP.txt"



Copy File (cFile)
to
(cDir+JustFname(cFile))


Por: David Amador T

Mostrar 2 reportes al mismo tiempo

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Me imagino que siempre has querido poder mostrar
más de un reporte al mismo tiempo, a continuación tienes un ejemplo de como
hacerlo.



Set Safety Off




Create Cursor
Tabla1 (Txt C(10))


Insert Into
Tabla1
Values
("XXXXXXXXXX")


Insert Into
Tabla1
Values
("YYYYYYYYYY")


Insert Into
Tabla1
Values
("WWWWWWWWWW")



Create Report
Reporte1
From
Tabla1


Report Form
Reporte1
Preview Nowait



Create Cursor Tabla2 (Txt C(10))


Insert Into
Tabla2
Values
("AAAAAAAA")


Insert Into
Tabla2
Values
("BBBBBBBB")


Insert Into
Tabla2
Values
("CCCCCCCC")



Create Report
Reporte2
From
Tabla2


Report Form
Reporte2
Preview Nowait



Por: David Amador T

Determinar si una tabla esta abierta en forma exclusiva o compartida

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Es muy importante determinar como esta abierta una
tabla, de esa forma podremos provenir errores en nuestro código; en este caso
conoceremos si la tabla esta abierta de forma exclusiva o compartida.


lEx =
IsExclusive("Tabla")


? Iif(lEx,
"Exclusiva",
"Compartida")




 

Por: David Amador T

Imprimir un rango de paginas de un documento de Word a través de Automatización

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Con este ejemplo podrás indicarle a Word que
paginas deseas imprimir de un documento desde VFP. Asegúrese de seleccionar un
archivo e impresora en este ejemplo, puesto no lleva ninguna validación
respectiva.


#
DEFINE
ImpRangoPag 4



cPaginas =
"1,3,6-12"



oWord =
CreateObject("Word.Application")

oWord.Documents.
Open(GetFile("DOC"))

oWord.ActivePrinter =

GetPrinter()


oWord.ActiveDocument.Printout(.T.,,ImpRangoPag,,,,,1,cPaginas)

 

 

Por: David Amador T

Descargar archivo desde Internet

Visual Fox Pro, Trucos Comentarios ( 0 ) »
En este ejemplo utilizando el control InetCtls
para descargar un archivo de internet; podemos hasta crear una barra de progreso
a medida que se descarga el archivo.


oInet =
Create("InetCtls.Inet")

oInet.RemotePort =

"8080"


oInet.RequestTimeOut = 1000



* En caso de necesitar Proxy

* oInet.proxy = "192.168.6.3"



cUrl =
"http://www.davphantom.net/img/log2.png"



oDatos = oInet.OpenURL(cUrl, 1)



nHF =
Fcreate("log2.png")



For
i = 1
To Alen(oDatos)

    Fwrite(nHF,
Chr(oDatos[i]))


EndFor



FClose
(nHF)


 

Por: David Amador T

Obtener el texto de la ventana del MessageBox

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Un truquito bueno; ¿Deseas poder obtener el texto
completo que se muestra en un MessageBox?.


Lo único que debes hacer presionar las teclas:
Ctrl + C cuando te muestre el MessageBox y ya tendrás en el portapapeles el
mensaje que se mostraba.

Por: David Amador T

Obtener el código HTML de una pagina web

Visual Fox Pro, Trucos Comentarios ( 0 ) »
En este ejemplo utilizaremos automatización para
obtener el código de una pagina web.


oIE =
CreateObject("InternetExplorer.Application")

oIE.Navigate(
"http://yahoo.com")



DO WHILE
oIe.ReadyState = 1

    WAIT WINDOW
"Procesando...."
Nowait

ENDDO



oIEdocument = oIE.Document

?oIEdocument.body.innerhtml

Por: David Amador T