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

Formularios transparentes

Visual Fox Pro, Trucos Comentarios ( 0 ) »

Este tema es bastante solicitado ... ¿Comó crear
formularios transparentes?

oForm =
Createobject("Tform")

oForm.
Visible
= .T.


Read Events



Define Class
tform
As Form

    #Define
LWA_COLORKEY 1

   
#
Define
LWA_ALPHA 2

   
#
Define
GWL_EXSTYLE -20

   
#
Define
WS_EX_LAYERED 0x80000

   
AutoCenter=.T.

   
Caption="Transparent
Form"

   
ShowWindow=2


   
Add Object
cmdSet
As CommandButton With;

       
Left=10,;

       
Top=10,;

       
Height=27,;

       
Width=80,;

       
Caption="Set"


   
Add Object
cmdClear
As CommandButton With;

       
Left=100,;

       
Top=10,;

       
Height=27,;

       
Width=80,;

       
Caption="Clear"


    Procedure Init

       
Declare Integer
GetWindowLong
In
user32;

           
INTEGER HWnd,
Integer
nIndex

       
Declare Integer
SetWindowLong
In
user32;

           
INTEGER HWnd,
Integer
nIn,
Integer
dwNLong

       
Declare Integer
SetLayeredWindowAttributes
In
user32;

           
INTEGER HWnd,
Integer
crKey,;

           
SHORT
bAlpha,
Integer
dwFlags


    Procedure Destroy

       
Clear Events




   
Procedure
SetMode

        Local
nExStyle

       
nExStyle=GetWindowLong(
This.HWnd,
GWL_EXSTYLE)

       
nExStyle=
Bitor(nExStyle,
WS_EX_LAYERED)

       
=SetWindowLong(
This.HWnd,
GWL_EXSTYLE, nExStyle)

       
=SetLayeredWindowAttributes(
This.HWnd,
0,;

       
128, LWA_ALPHA)


    Procedure
ClearMode

       
Local
nExStyle

       
nExStyle=GetWindowLong(
This.HWnd,
GWL_EXSTYLE)

       
nExStyle=
Bitxor(nExStyle,
WS_EX_LAYERED)

       
=SetWindowLong(
This.HWnd,
GWL_EXSTYLE, nExStyle)


   
Procedure
cmdSet.Click

       
Thisform
.SetMode


   
Procedure
cmdClear.Click

       
Thisform
.ClearMode


Enddefine







Por: David Amador T

Marcas en los menus

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Puedes agregar marcas a tus menús indicando que una opción ya fue seleccionada o que algo se encuentra activo.

Define Popup MenContex SHORTCUT Relative From Mrow(),Mcol()
Define Bar 1 Of MenContex Prompt "Elemento 1"

Define Bar 2 Of MenContex Prompt "Elemento 2"
Define Bar 3 Of MenContex Prompt "Elemento 3"

Define Bar
4 Of MenContex Prompt "Elemento 4"
On Bar 2 Of MenContex ACTIVATE Popup
SubM1

Define Popup SubM1 SHORTCUT Relative
Define Bar
1 Of SubM1 Prompt "Sub Elemento X"

Define Bar
2 Of SubM1 Prompt "Sub Elemento Y"
Define Bar 3 Of SubM1 Prompt "Sub Elemento Z"

Define Bar
4 Of SubM1 Prompt "Sub Elemento M"
Define Bar 5 Of SubM1 Prompt
"Sub Elemento P"

Set Mark Of Bar 1 Of SubM1 To .T.
Set Mark Of Bar 3 Of SubM1
To .T.
Set Mark Of Bar 4 Of MenContex To .T.

Activate Popup MenContex



Por: David Amador T

Llenar formularios en paginas desde VFP

Visual Fox Pro, Trucos Comentarios ( 0 ) »
A través de automatización puedes los formularios de captura de datos de las paginas webs ...

En este ejemplo se muestra como logearse en mi sitio web a través de VFP; la sesión como usuario debe estar cerrada para poder probar el ejemplo.

oIE = Createobject("InternetExplorer.Application")
oIE.Navigate(
"http://www.davphantom.net")


Do While(oIE.Busy)
    DoEvents
EndDo

oIE.Visible = .T.

oDoc = oIE.Document

oForm = oDoc.forms[0]

oForm.item[0].value
= "USUARIO"
oForm.item[1].value=
"CLAVE"
oForm.submit()
 


Por: David Amador T

SelectSelectOnEntry en VFP 9 no funciona .... Puedes solucionarlo así

Visual Fox Pro, Trucos Comentarios ( 0 ) »

En VFP 9 SelectSelectOnEntry no funciona como tal
.... puedes resolver el problema de varias formas, esta es una de ellas.


Public
oForm

oForm =
Createobject("form1")

oForm.
Show()



Define Class
form1
As Form

   
DoCreate
= .T.

   
Caption
=
"Form1"

   
Name
=
"Form1"

 

   
Add Object
text1
As TextBox With
;

       
Height
= 25, ;

       
Left
= 60, ;

       
Top
= 60, ;

       
Width
= 97, ;

       
Name
=
"Text1"

 

   
Add Object
text2
As TextBox With
;

       
Alignment
= 3, ;

       
Value
= 123.45, ;

       
Height
= 25, ;

       
Left
= 60, ;

       
SelectOnEntry
= .T., ;

       
Top
= 108, ;

       
Width
= 97, ;

       
Name
=
"Text2"

 

   
Procedure
text2.Click

       
TextBox
::GotFocus()

   
EndProc

EndDefine



Por: David Amador T

Devolver número con 2 decimales sin aproximarlo

Visual Fox Pro, Trucos Comentarios ( 0 ) »
En muchas ocasiones tenemos un número con más de 2 decimales y queremos que solo nos devuelva 2, pero al hacerlo el número es aproximado, lo cual queremos evitar.

nNum1 = 9874.6935
nNum2 = 1235.05685

? Round(Floor(nNum1 * 100) / 100, 2)

?
Round(Floor(nNum2 * 100) / 100, 2)

 


Por: David Amador T

Lista de los drivers ODBC instalados

Visual Fox Pro, Trucos Comentarios ( 0 ) »

Con este truco podrás obtener la lista de todos
los drivers ODBC instalados en tu equipo.


Local
cBuffer, nBufsize, ii, ch, cName

nBufT = 16384

cBuffer =
Repli(Chr(0),
nBufT)



Declare Integer

SQLGetInstalledDrivers

In
odbccp32;

    STRING
@lpszBu,
Integer
cbBufM,
Integer
@BufOut



If
SQLGetInstalledDrivers(@cBuffer,
nBufT, @nBufT)=0

   
Return

EndIf


Create Cursor csResult (drvname
C(100))

cBuffer =
Substr(cBuffer,1,nBufT)

cName =
""



For
ii=1
To
nBufT

   
ch =
Substr(cBuffer,
ii,1)

   
If
ch =
Chr(0)

       
Insert Into
csResult
Values
(m.cName)

       
cName =
""

   
Else

       
cName = cName + ch

   
EndIf

EndFor




Go Top

Browse Normal Nowait


Por: David Amador T

Nombre de clases contenidas en una libreria de clases

Visual Fox Pro, Trucos Comentarios ( 0 ) »
En algunas ocasiones me gusta saber cuales clases tengo de una librería de clases, pero no deseo abrir dicha librería...

Dimension aClasses[1]
cNomLib = Home() + "FFC\_datetime.vcx"

AVcxClasses(aClasses, cNomLib)


For i=1 To Alen(aClasses,1)
   ? aClasses
[i,1]
Endfor




Por: David Amador T

Opcion "Copiar a Carpeta" y "Mover a Carpeta" en el menu contextual de Windows

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Un buen truco para Windows ..... Podrás mover y copiar archivos desde el menú contextual de Windows.

Para configurarlo ve al menú inicio y allí selecciona "Ejecutar" y escribes Regedit; ahora debes ir a la siguiente ruta:

HKEY_CLASSES_ROOTAllFilesystemObjectsshellexContextMenuHandlers

Ahora debes hacer click con el botón derecho en el ContextMenuHandlers y seleccionas "Nueva" y en el submenu "Clave" y le colocas el nombre "Copiar a"; ahora seleccionas "Copiar " y vas al panel derecho y haces doble click sobre la entrada "Predeterminado" y le colocas el valor
{C2FBB630-2971-11D1-A18C-00C04FD75D13}. ... LISTO.

Ahora si quieres agregar el mover a ... haces lo mismo ... pero ahora el valor que le vas a colocar es {C2FBB631-2971-11D1-A18C-00C04FD75D13}

Disfruta este truco de Windows ... seguro te será de utilidad.

 


Por: David Amador T

Agregar elementos por código a un Combo y colocar disabled elementos del combo

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Este es un truco bastante solicitado en foros ...



oForm =
Newobject("Form1")

oForm.
Show

Read Events


Define Class Form1
As Form


DataSession
= 2


Top
= 0


Left
= 0


Height
= 262


Width
= 325


Caption
=
"ListBox"


Name
=
"Form1"



Add Object
List1
As ComboBox With
;


ColumnCount
= 1, ;


ColumnWidths
=
"200",
;


Left
= 50, ;


Sorted
= .T., ;


Style
= 2, ;


TabIndex
= 3, ;


Top
= 40, ;


Width
= 200, ;


Name
=
"List1"



Procedure
List1.Init


With This


.AddItem("Elemento
1"
)


.
AddItem("Elemento
2"
)


.
AddItem("\Elemento
deshabilitado"
)


.
AddItem("Elemento
4"
)


.
AddItem("Elemento
Otro"
)


.
AddItem("Elemento
6"
)


EndWith


EndProc

EndDefine




Por: David Amador T

Mostrar barra de Progreso en un Select SQL

Visual Fox Pro, Trucos Comentarios ( 0 ) »
A muchos les gustaría mostrar una barra de progreso en sus consultas Select SQL; no es muy bueno hacerlo puesto que al estar activo el Set Talk las consultas tardaría mucho más; pero si aún así quieres utilizarla....

Para poder ver la barra la tabla debe tener bastantes registros....

Define Window WinSQL From
12,30 To 16,70;
    SHADOW Color Scheme5 Double Name loWind


Active Window
WinSQL Noshow

Set Talk Window WinSQL

Set Talk On
Set Notify On

Select * From Tabla

Release Window WinSQL
 



Por: David Amador T

Obtener los ventanas de Internet Explorer abiertas

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Muy buen truco que te permitirá conocer las ventanas que el usuario tiene abiertas de Internet Explorer.

Local oShell As Shell32.Shell
Local
oWindow as SHDocVw.WebBrowser


oShell = Createobject("Shell.Application")

For Each oWindow In oShell.Windows

    ? oWindow.LocationName,oWindow.LocationURL
Endfor

 


Por: David Amador T

Obtener la versión del VFP OLEDB Provider por código

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Muchas veces no sabes o recordamos cual fue la última versión del proveedor OLEDB instalado .... una forma de saber a través de código.

oConn = NewObject("AdoDB.Connection")
oConn.
Open("Provider=VFPOLEDB;Data Source=C:")
? oConn.Properties(
"Provider Version").Value
oConn.Close()

oConn =
Null
 


Por: David Amador T

Tips - zloc

Visual Fox Pro, Trucos Comentarios ( 0 ) »
En VFP 8 y 9 se encontró un truco bastante útil, el cual te muestra en el IntelliSense todas las variables definidas dentro del procedimiento o método actual.

Lo que debes hacer es lo siguiente: Escribes zloc y luego presionas la barra de desplazamiento, te aparecerán en el intellisense las variables declaradas en el código actual.



Por: David Amador T

Ejecutar código dinámicamente

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Uno de las grandes cualidades de Visual Fox Pro es el poder ejecutar código dinámicamente; son pocos los lenguajes que permiten realizar esto.

Podemos almacenar dentro de una tabla la(s) sentencia(s) a ejecutar o simplemente pasarla como texto a la función ExecScript o hacer una macrosustitución....

Si esta dentro de un campo de una tabla

ExecScript(Tabla.Campo)


O si es una cadena de texto

cCmd = "For x=1 to 50"+CHR(13)+"?x"+CHR(13)+"Next"+CHR(13)

ExecScript
(cCmd)
 


Por: David Amador T

Gráfico en Excel a través de Automatización

Visual Fox Pro, Trucos Comentarios ( 0 ) »
Otra forma de generar gráficos en Excel desde VFP a través de automatización

#Define
Tab Chr
(9)
#
Defin
CRLF Chr(13)+Chr(10)

Public oGraph

_Cliptext = "" + Tab + "Depto X" +
Tab + "Depto Y"
+ CRLF +;
   "Arroz" +
Tab + "248" + Tab
+ "297" + CRLF+;
   
"Maíz"
+ Tab + "339" + Tab
+ "440"
+ CRLF+;
   
"Cereal"
+
Tab
+
"500"
+
Tab
+
"489"
+ CRLF+;

   
"Papas"
+
Tab
+
"125"
+
Tab
+
"235"
+ CRLF+;

   
"Otros"
+
Tab
+
"631"
+
Tab
+
"455"
+ CRLF



oGraph = Getobject("","Excel.Chart")



With
oGraph.Application

    .Visible
= .T.

   
.WorkSheets(1).Cells().
Clear

   
.Worksheets(1).Cells(1,1).PasteSpecial

   
.Charts
[1].AutoFormat(-4100,1)

EndWith
 


Por: David Amador T