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

Copiar archivos cuando la ruta de estos contiene espacios

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Este es un problema bastante común; aquí tienes la
forma de evitarte problemas con las rutas que contienen espacios.


cDirDest =
"c:\Mis
Documentos\"


cFileACopiar =
"Mi
Archivo de Ayer.txt"


Copy File
(cFileACopiar)
To
(cDirDest+cFileACopia)






 


Por: David Amador T

Mostrar el menú Inicio de Windows

Visual Fox Pro, Trucos Comentarios ( 0 ) »
En este pequeño truco miraremos como podemos
mostrar el Menu Inicio de Windows como si hubiéramos hecho click en el botón
inicio; lo haremos con API.

#Define
VK_LWIN 0x5B

#
Define
VK_RWIN 0x5C

#
Define
KEYEVENTF_KEYUP 0x2



Declare
keybd_event
In
Win32API ;

    SHORT
bVk,
SHORT
bScan, ;

    Integer
dwFlags, Integer
deExtraInfo



keybd_event(VK_LWIN,0x5B,0,0)

keybd_event(VK_LWIN,0x5B,KEYEVENTF_KEYUP,0)



 


* Ahora veremos como mostrarlo esperar

* unos segundos y luego ocultarlo




#
Define
VK_LWIN 0x5B

#
Define
VK_RWIN 0x5C

#
Define
KEYEVENTF_KEYUP 0x2




Declare
keybd_event
In
Win32API ;

    SHORT
bVk,
SHORT
bScan, ;

    Integer
dwFlags, Integer
deExtraInfo



keybd_event(VK_LWIN,0x5B,0,0)

keybd_event(VK_LWIN,0x5B,KEYEVENTF_KEYUP,0)



=Inkey(.3)
* Espera 3 segundos



keybd_event(VK_LWIN,0x5B,0,0)

keybd_event(VK_LWIN,0x5B,KEYEVENTF_KEYUP,0)



Por: David Amador T

Comprobar si Excel está ejecutado

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Verificaremos a través del API de Windows si Excel
se encuentra abierto, para eso utilizaremos la función FindWindow.


Declare Integer
FindWindow
In
WIN32API;


String
cNull,
String
cWinName


nOk = FindWindow("XLMAIN",
0)



? "Excel"+Iif(nOk
> 0,
"","
no está"
)+"
ejecutándose"


Por: David Amador T

Habilitar los eventos en la base de datos a través de código

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Los eventos en la base de datos de VFP aparecieron
en la versión 7 y la verdad tienen sus ventajas; en algunas ocasiones
necesitamos desactivar estos eventos desde nuestra aplicación a través de
código; Aquí está la forma de hacerlo



Reemplace "MiBaseDatos" por el nombre de la base de datos a la que desee
desactivar los eventos


DBSetProp
("MiBaseDatos","Database","DBCEvents",.F.)




Para volver a activarlos:



DBSetProp("MiBaseDatos","Database","DBCEvents",.T.)










 

Por: David Amador T

Mostrar un valor DateTime sin segundos en formato de 12 horas

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Un truco sencillo pero bueno.


?(
Left(Ttoc(Datetime()),14)
+
Right(Ttoc(Datetime()),2))






Por: David Amador T

Determinar si un indice existe en un tabla sin abrir la tabla

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Este ejemplo tiene una consideración: La tabla
debe estar contenida en una base de datos.



Lo que vamos hacer es acceder al diccionario de datos de la base de datos, para
eso abriremos la BD como tabla y buscaremos el índice allí, de esta forma no es
abrir la tabla

Close
Databases All

Use Home
(2)+"Northwind\northwind.dbc"
In
0
Alias Dbc Noupdate



Select T.ObjectName
Table,I.ObjectName
Tag From Dbc
T ;

   
Join Dbc
I
On
T.ObjectId = I.ParentId ;

   
WHERE
T.objecttype ==
"Table"
;

   
And I.objecttype ==

"Index"





 

Por: David Amador T

Deshabilitar y habilitar el botón inicio de Windows

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Una forma muy sencilla para habilitar y
deshabilitar el botón inicio de Windows; utilizando el API de Windows.


Declare INTEGER
FindWindowEx
IN
user32.dll
;

    Long,
Long,
string,
String


Declare INTEGER EnableWindow
in
user32.dll
Long
,
Long



* Deshablitado = 0

* Hablitado = 1



nEnable = 0 


* Deshabilitado



lHwnd = FindWindowEx(0, 0,

"Shell_TrayWnd",
.NULL.)

lHwnd = FindWindowEx(lHwnd, 0,

"Button",
.NULL.)


=EnableWindow(lHwnd, nEnable)







 

 


Por: David Amador T

Sumando días a un campo DateTime

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Cuando queremos sumar días a un campo Date, lo
hacemos muy sencillo  Date() + NumeroDías; pero cuando se le suman los días
a un campo DateTime tenemos que tener cuidado por que el tomará el valor a sumar
como segundos.


Ejemplos:




* Probando con Date( )


?
Date(2006,3,13)
+ 2


* Devolverá: 2006.03.15



* Pero con un DateTime


?
DateTime(2006,3,13,
8,10,4) + 2


* Devolverá: 2006.03.13
08:10:06 AM



Una solución es la siguiente, multiplicar el
número de días a sumar por 86400 que es el número de segundos que tiene un día.



Resultado:




?
DateTime(2006,3,13,
8,10,4) + (2 * 86400)


* Devolverá: 2006.03.15
08:10:04 AM





 


Por: David Amador T

Determinar si un campo existe en una tabla

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Es de las formas más rápidas para determinar si un
campo existe en una tabla determinada.


?
"Existe ",Fsize("Campo","Tabla")
> 0


Por: David Amador T

Descargar archivo desde Internet

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Una forma muy sencilla para descargar un archivo
de Internet, utilizando la función DoFileDownload del API de Windows.


Declare DoFileDownload
In
shdocvw.Dll;

    STRING
lpszFile


cRuta = "http://www.davphantom.net/archivo.txt"



DoFileDownload(Strconv(cRuta,12))



 

Por: David Amador T

Obtener N decimales sin cambiar el Set Decimals

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Este es un ejemplo bastante común; en una variable
de tipo carácter tengo un número con 4 decimales pero deseo convertirlo a
numérico y que me muestre todos los decimales.



La solución que se nos viene a la mente es cambiar el Set Decimals y listo; pero
hay otra forma de hacerlo sin tocar esta configuración SET; Para eso
utilizaremos la nueva función CAST de VFP.


* Asumamos que el Set Decimals
está en 2


nValor =
"8.2433"

 


* Con la función VAL() me devolveria 8.24


?
VAL(nValor)



* Con la función CAST() me deolveria el valor 8.2433


?
CAST(nValor
AS
N(20,4))



 

Algo también interesante con VAL()
aproximaría el valor mientras que con CAST no.



 

nValor =

"8.2833"



* Con la función VAL() me devolveria 8.29


?
VAL(nValor)



* Con la función CAST() me deolveria el valor 8.2833


?
CAST(nValor
AS
N(20,4))


 


Por: David Amador T

Determinar el tipo de unidad de almacenamiento

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Alguna vez quise determinar si una unidad era una
memoria USB o si la unidad era un disco de red; el problema lo solucione con
esta función de API de Windows.


Declare Long
GetDriveType
In
"kernel32"
;

    STRING
nDrive



nRet = GetDriveType("H:")



Do Case

   
Case
nRet = 1

       
?
"DESCONOCIDO"

   
Case
nRet = 2

       
?
"DISCO REMOVIBLE"

   
Case
nRet = 3

       
?
"DISCO DURO"

   
Case
nRet = 4

       
?
"DISCO EN RED"

   
Case
nRet = 5

       
?
"CDROM"

   
Case
nRet = 6

       
?
"DISCO RAM"


EndCase


 

Por: David Amador T

Quitar los themas de Windows a un formulario

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Usted puede quitar las themas de Windows a un
formulario con la propiedad "Themes", pero en esta caso utilizaremos el API de
Windows para hacerlo.



Creemos un formulario y coloquemos el siguiente código en el evento LOAD del
formulario y luego ejecutémoslo


Declare Integer
SetWindowTheme
In
UxTheme ;

   

INTEGER HWnd
,
String
pszSubAppName,;

   

String
pszSubIdList


=SetWindowTheme(Thisform.HWnd,
Null,
"")




 

 

Por: David Amador T

¿Deseas reiniciar el PC?

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Esta es una forma muy sencilla de reiniciar el PC;
en este caso lo haremos al igual de como lo hacen los programas Instaladores, es
decir llamaremos a una función de la DLL setupapi.dll para que esta realice esta
operación.

Declare
SetupPromptReboot
IN
setupapi.dll
;

    Long
FileQueue,
Long
Owner,
Long
ScanOnly



Para reiniciar, preguntando si se desea
proceder



SetupPromptReboot (0,
_Screen.hWnd,
0)


Para reiniciar, sin preguntar


SetupPromptReboot (0, _Screen.hWnd,
1)


 


Por: David Amador T

Obtener la IP de otro PC dentro de la Red

Visual Fox Pro, Trucos, Funciones API Comentarios ( 0 ) »
Esta es una pregunta muy frecuente, aquí está
una posible solución para conocer la IP de un PC dentro de nuestra red.



Utilizamos el comando PING de MS-DOS (MSDOS) y enviamos el resultado a un
archivo de texto y luego de allí extractamos la IP del PC.



RUN
ping
"NOMBRE_PC"
> c:\PingIp.TXT

cTxt =
FILETOSTR([c:\PingIp.TXT])

cTxt =
SUBSTR(cTxt,AT("[",cTxt)+1)

?
LEFT(cTxt,AT("]",cTxt)
-1)


 


Por: David Amador T