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

Determinar si la tecla SHIFT, CONTROL o ALT están presionadas

Visual Fox Pro, Trucos Comentarios ( 0 ) »
En este ejemplo utilizaremos el API de Windows para determinar si las teclas SHIFT - CONTROL - ALT están presionadas, ya sea de forma independiente o al mismo tiempo.
Clear

#Define
VK_SHIFT 0x10

#
Define
VK_CONTROL 0x11

#
Define
VK_MENU 0x12

#
Define
PRESSED 0x07



Declare Integer
GetKeyboardState
In
WIN32API
String
@



Do While
.T.

   
m1 =
Replicate(Chr(0),255)

   
Wait Window
""
Timeout
0.5

   
GetKeyboardState(@m1)



   
?
"Shift",
Bittest(Asc(Substr(m1,VK_SHIFT+1,1)),PRESSED)

   
?
"Control",
Bittest(Asc(Substr(m1,VK_CONTROL+1,1)),PRESSED)

   
?
"Alt",
Bittest(Asc(Substr(m1,VK_MENU+1,1)),PRESSED)


   
If Lastkey()
== 27

        Exit

   
EndIf

EndDo





Por: David Amador T

Obtener la parte decimal de un número

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Esta es la forma más sencilla de obtener la parte decimal de un número


nNum = 721.96841
? nNum -
INT(nNum)


Por: David Amador T

Deshabilitar el menú de un formulario de nivel superior

Visual Fox Pro, Trucos Comentarios ( 0 ) »

Excelente truco que te permitirá deshabilitar el menú de un formulario de nivel superior

El evento LOAD del formulario de nivel superior colocamos


Do MenuFormSuperior.mpr
With ThisForm,"MnuSupe"


Y cuando deseemos deshabilitar el menú :

Set Skip Of Menu MnuSupe .T.


Por: David Amador T

Obtener los registros de una tabla que no estan en otra

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Este truco le ayudará a buscar los registros de una tabla que no están en otra.

En este caso utilizamos un campo para realizar la búsqueda. Veamos 2 formas de hacerlo:

Select * From Tabla1 ;
    WHERE Not Exists ;
   (
Select * From
Tabla2 ;
   
WHERE Tabla1.Id = Tabla2.Id)
 
La otra forma de hacerlo es:

Select * From Tabla1 ;
    Where Id Not In
   
(Select Id From Tabla2)
 


Por: David Amador T

Determinar si existe un diskette en la unidad de disco

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Determinar si existe un diskette en la unidad de disco

Por: David Amador T

Cambiar la letra a las unidades de disco

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Por aquí otro truquito fuera del tema pero bastante útil; ¿Quieres cambiarles las letras asignadas a tus unidades de disco?



Empecemos, Pulsaremos el botón derecho del ratón sobre Mi PC y seleccionaremos "Administrar". Una vez allí, seleccionamos el administrador de discos y haremos clic con el botón derecho del ratón sobre el dispositivo al que queremos cambiarle la letra. Seleccionamos finalmente la opción "Cambiar Letra de Unidad" y ponemos la que queremos darle.

Por: David Amador T

Cadenas de conexión para tablas DBF con el OLEDB Provider

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Si deseas o necesitas conectarte a tus DBF
utilizando el OLEDB Provider de VFP aquí tienes las cadenas de conexión que
debes utilizar

* Para
DBC


cCon =
[Provider=VFPOLEDB.1;]
+ ;

       [Data Source=C:\Ruta\Datos\BaseDatos.dbc;]
+ ;

      
[Share Deny
None;Password="";]
;

      
[Collating Sequence=MACHINE]




* Para tablas libres


cCon =
[Provider=VFPOLEDB.1;]
+

       [Data Source=C:\Ruta\Datos\;]

      
[Share Deny None;Password="";]
;

      
[Collating Sequence=MACHINE]


 


Por: David Amador T

Convertir Entero a Binario

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Aquí tiene la función que te permitirá convertir
número enteros a binarios.

?Int2Bin(1)

?Int2Bin(25)

?Int2Bin(100)

?Int2Bin(198)



Function
Int2Bin(num)

    Do Case

       
Case
num = 0

   
    Return
"0"

   
Case
num < 0

       
num = 0x100000000 + m.num

   
Endcase


   
Local
cRet, nIndex

   
cRet =
""


   
For
nIndex=Min(31,
Ceiling(Log(num)/Log(2)))
To
0
Step
-1

       
cRet = cRet +

Iif(Bittest(num,
nIndex),
"1",
"0")

   
Next

   
Return
cRet


EndFunc


 


Por: David Amador T

Conocer el número de días del mes

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Un truco bastante utilizado


?
Day(Gomonth(Date()-Day(Date())+
1,1)-1)







 


Por: David Amador T

Guardar y restaurar la configuración de la red de su PC

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Muy buen truco, es ideal para usuarios móviles a
los cuales les toca pegarse a diferentes redes dependiendo de donde se
encuentren, y tienen que cambiar la configuración de su red.





No estoy seguro si funciona en Win9x (lo dudo); pero funciona con XP, 2000





Para guardar la configuración de red a un archivo de texto que luego se pueda
utilizar, se ejecuta el siguiente comando en el MS-DOS o la opción "Ejecutar" de
Windows:



netsh dump > mi_red_cfg.txt



OJO: Que el signo ">" está redirigiendo la salida del comando al archivo "mi_red_cfg.txt".





Ahora si ha Usted le toco cambiar la configuración de su red porque estuvo de
viaje cuando vuelva sólo tiene que cargar la configuración del archivo; de la
siguiente forma desde MS-DOS o la opción "Ejecutar" de Windows:





netsh exec mi_red_cfg.txt

 

Por: David Amador T

Mostrar el cuadro de dialogo "Agregar y quitar programas de Windows"

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Por si acaso deseas mostrar el cuadro de dialogo
"Agregar y quitar programas de Windows" desde tus aplicativos de VFP.


oShell =
CreateObject("WScript.Shell")

oShell.
Run("RunDll32.exe
shell32.dll,Control_RunDLL appwiz.cpl,,0"
)



 


Por: David Amador T

Comprobando cual es más optimo de Alltrim - Transform - Alltrim(Str())

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Otro test para medir cual función (Alltrim -
Transform - Alltrim(Str())) es las más optima. Haremos un ciclo For de 100000
iteraciones para medir el rendimiento de cada una de dichas funciones.



Clear



******************************

* ALLTRIM(TRANSFORM(nCounter))

******************************


Local
nCounter, cResult

x =
Seconds()


For
nCounter = 1
To
1000000

   
cRet =
Alltrim(Transform(nCounter))


EndFor


?
Seconds()
- x && 3.415 Seg



******************************

* TRANSFORM(nCounter)

******************************


x =
Seconds()


For
nCounter = 1
To
1000000

   
cRet =
Transform(nCounter)


EndFor


?
Seconds()
- x && 3.225 Seg

 


******************************

* ALLTRIM(STR(nCounter))

******************************


x =
Seconds()


For
nCounter = 1
To
1000000

   
cRet =
Alltrim(Str(nCounter))


EndFor


?
Seconds()
- x  && 1.552 Seg



 

 


El resultado arrojado es que es más optimo
utilizar ALLTRIM+STR.







Por: David Amador T

¿Cúal es más optimo VARTYPE o TYPE?

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Hace algunos meses Calvin Hsia publicó un post
en su blog en donde comparó las funciones VARTYPE y TYPE para determinar cual de
ella es más optima



Aquí está un ejemplo:





- Utilizando VarType, el tiempo de procesamiento de la prueba fue de 1.382 Seg
(Depende del PC)

nS =
Seconds()

zz =
"a"



For
i = 1
To
1000000

   
cc =
VarType(zz)


EndFor



?
Seconds()
- nS


 

- Utilizando Type, el tiempo de procesamiento
de la prueba fue de 3.024 Seg (Depende del PC)




nS =
Seconds()

zz =
"a"



For
i = 1
To
1000000

   
cc =
Type(zz)


EndFor



?
Seconds()
- nS



Podemos concluir entonces que el VARTYPE es una
función más optimizada que el Type y esto se debe a la compilación que hace está
última a los parámetros pasados




Por: David Amador T

Número de serie del disco duro

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Esta es una de las formas más sencilla de conocer
el serial del disco duro.

cUnidad =
"C:"



=
Messagebox(SerialDisco(cUnidad),0)



Function
SerialDisco(cUnidad)

    Run
VOL &cUnidad > VOL.tmp

   
cUnidad=
Filetostr("vol.tmp")

   
Return Substr(cUnidad,Rat("
"
,cUnidad))


EndFunc


 

 


Por: David Amador T

Barra de progreso con clase de VFP

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Aquí tienes un ejemplo de como hacer una barra de
progreso utilizando la clase que viene con VFP para dicho propósito.


cRutaClase =
Home()+"FFC\_therm.vcx"


cTitulo =
"Ejemplo
de barra de Progreso"



oBarra =
Newobject("_thermometer",cRutaClase,
"",;

                     cTitulo, 100, 1)



With
oBarra

   
.
Visible
= .T.

   
.
Update(10,
"Buscando...")

   
Inkey(.2)
&& Para producir
retardo en el ejemplo

   
.Update(20,
"Paso 1")

   
Inkey(.2)

   
.
Update(40,
"Paso 2")

   
Inkey(.2)

   
.
Update(70,
"Paso 3")

   
Inkey(.2)

   
.
Update(90,
"Paso 4")

   
Inkey(.2)

   
.
Update(100,
"Terminado!")

   
Inkey(.2)

   
.
Release()


Endwith


 


Por: David Amador T