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 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

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