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

Sistema operativo que utilizas

Visual Fox Pro, Trucos Comentarios ( 0 ) »

Existen diversas formas de conocer que sistema operativo utilizas; está es una forma sencilla pero bastante buena.

cOsx = Os(1)

cSistema = ""

Do Case
    Case "6.00" $ cOsx
          cSistema = "LongHorn"
     Case "5.02" $ cOsx
         cSistema = "2003"
    Case "5.01"
$ cOsx
         cSistema = "XP"
    Case "5.0" $ cOsx
         cSistema = "2000"
    Case "NT" $ cOsx
         cSistema = "NT"
    Case "4.1" $ cOsx
         cSistema = "98"
    Case"4.9" $ cOsx
        cSistema = "ME"
    Case "4.0" $ cOsx Or "3.9" $ cOsx

        cSistema =
"95"

    Case "3." $ cOsx
        cSistema = "3.1"
Endcase

? "Windows " + cSistema



Por: David Amador T

Agregar a un Combo cuando no exista el elemento

Visual Fox Pro, Trucos Comentarios ( 0 ) »

Es un truquito básico pero bastante útil cuando queremos agregar un elemento a un combo cuando escribimos en él pero solo cuando el elemento no exista.

En el evento KeyPress del Combo escribimos lo siguiente:


If nKeyCode = 13 >Then
&& Enter
    lExists = .F.
   
For
i = 1To This. ListCount
         If Upper(This.ListItem<(i))= Upper(Alltrim( This.DisplayValue))
              lExists
= .T.
            Exit
         Endif
    Endfor

 
    If Not lExists

        This.AddItem( This.DisplayValue)
         Wait Window "Agregado"
     Else
         Wait Window "Existente"
    Endif
Endif


Por: David Amador T

Imprimir un archivo PDF

Visual Fox Pro, Trucos Comentarios ( 0 ) »

En muchas ocasiones se necesita imprimir un archivo PDF (Acrobat Reader) y pensamos diferentes formas de hacerlo.... esta es una de las más sencillas.

Para eso utilizamos la función ShellExecute del API de Windows.


Declare Integer ShellExecute In shell32. Dll;
    long HWnd,String cOperation, ;

    string cFile, String t cParam, ;
    string cDir, Integer nShow

cRutaPDF = "C:Rutaarchivo.pdf"

ShellExecute(0, "print", cRutaPDF,"", Fullpath(""),0)



Por: David Amador T

Evitar que se digiten espacios en un TextBox

Visual Fox Pro, Trucos Comentarios ( 0 ) »

Este truco es ideal para TextBox en donde digitaras códigos los cuales no pueden contener espacios.


En el evento KeyPress del TextBox escribimos lo siguiente:


If nKeyCode = 32
     Nodefault
Endif


Por: David Amador T

Conocer el programa predeterminado de envió de correos

Visual Fox Pro, Trucos Comentarios ( 0 ) »

Últimamente he recibido varias consultas acerca de este tema ... Aquí esta la forma de conocer el programa de envió de correos predeterminado ....

En este truco utilizo la clase Registry que viene con VFP la cual facilita el acceso al registro de Windows.

Set classlib to Home(1) + "ffc/registry.vcx"
oReg = CreateObject("Registry")
 
cValue = ""
HKclass = "-2147483648"
cRut = "mailtoshellopencommand"

oReg.GetRegKey("", @cValue, cRut, HKclass)

?cValue



Por: David Amador T

Validar dirección de email

Visual Fox Pro, Trucos Comentarios ( 0 ) »

Puedes validar si una dirección de correo esta escrita correctamente utilizando un analizador de expresiones; en este caso utilizaremos el de Visual Basic Script (VBS).

* cEmail = ".@aa.co"
cEmail = " dav_amador@davphantom.net"
 
oRegE = CreateObject( "VBScript.RegExp")
oRegE.IgnoreCase = .T.

oRegE.Pattern = "^[A-Za-z0-9](([_.-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([.-]?[a-zA-Z0-9]+)*).([A-Za-z]{2,})$"
 
lOk = oRegE.Test(cEmail)

Release oRegE

?Iif(lOk, "Correcta","Incorrecta")

Por: David Amador T

Determinar si un ActiveX esta registrado

Visual Fox Pro, Trucos Comentarios ( 0 ) »

Uno de los problemas más frecuentes con los
ActiveX es el determinar si estan registrados, está es una forma sencilla de
conocerlo.


Todos los OCX tienen un nombre (referencia) interno, esta puede ser el GUID o
el nombre de la clase, en este ejemplo utilizaremos el nombre de la clase. ¿Pero
como hacemos para conocer este nombre de un ActiveX?... Creamos el Objeto en un
formulario de VFP y luego en la propiedad OleClass estará el nombre que
necesitamos.


Algunos ejemplos:



?OcxRegistrado("mscomctllib.treectrl.2")
&& Treeview


?OcxRegistrado("mscomctl2.monthview.2")
&& MontView


?OcxRegistrado("mswinsock.winsock.1")
&& WinSock


?OcxRegistrado("mscomctllib.progctrl.2")
&& ProgressBasr


?OcxRegistrado("mscal.calendar.7")
&& Calendar


?OcxRegistrado("agent.control.2")
&& Microsoft Agent


?OcxRegistrado("msflexgridlib.msflexgrid.1")
&& MSFlexGrid


?OcxRegistrado("mscomctl2.dtpicker.2")
&& Date Time Picker


?OcxRegistrado("mschart20lib.mschart.2")
&& Ms Chart


?OcxRegistrado("mscommlib.mscomm.1")
&& MsComm



Function OcxRegistrado(cClase)



   
Declare Integer
RegOpenKey
In
Win32API ;

       
Integer
nHKey,
String
@cSubKey,
Integer
@nResult

 

   
Declare Integer
RegCloseKey
In
Win32API ;

       
Integer
nHKey


    nPos = 0


    lEsta = RegOpenKey(-2147483648, cClase, @nPos) = 0



    If
lEsta

        RegCloseKey(nPos)

   
Endif


    Return lEsta



Endfunc




Por: David Amador T

Número de paginas de un documento de Word (Automatización)

Visual Fox Pro, Trucos Comentarios ( 0 ) »

En este truco utilizo automatización para conocer el número de paginas de un documento de Word; ejecute el código y seleccione un archivo de Word.

oWord = CreateObject( "Word.Application")
oDoc = oWord.Documents. Open(Getfile())
oDoc.Repaginate
 
cPag = Transform(oWord. Selection.Information(4))

=Messagebox( "Este documento tiene " + cPag + " paginas")
 

oWord.Quit
Release oWord

Por: David Amador T

Diferencia entre dos DateTime - Horas - Minutos - Segundos

Visual Fox Pro, Trucos Comentarios ( 1 ) »

Este truco es bastante útil ... Calcular el número de horas, minutos y segundos entre dos valor DateTime.

?HMSDif(Datetime(),
Dtot(Date()-10))

Function HMSDif (tDateTime1, tDateTime2)

   
Local
cRet, nS
    cRet = ""
 
    If! Vartype(tDateTime1)= "T"
Or !Vartype(tDateTime2)= "T"
         cRet = "E"

    Endif
 
    If Empty(cRet)
        If tDateTime2 > tDateTime1
              nS = tDateTime2 - tDateTime1
       
Else
             nS = tDateTime1 - tDateTime2
        Endif
 
        nS = Int(nS)

        cTime = Transform(Int(nS/3600),"9999")+":"+ ;
         Transform(Mod(Int(nS/60),60),"99")+":"+ ;
         Transform(Mod(nS,60)," 99")
       
Return cTime
    Else
         =Messagebox("Los valores deben ser DateTime")
          Return ""
    Endif

Endfunc

Por: David Amador T

Degradado en formulario de izquierda a derecha

Visual Fox Pro, Trucos Comentarios ( 0 ) »

A veces queremos cambiar el aspecto de un formulario utilizando colores degradados; este truco te ayudará.


En el Load del formulario coloca el siguiente código:


For lnRow = 0 >To This.Width
    This.ForeColor= Rgb(0,0,255-255 * lnRow/This.Width)

This.Line(lnRow, 0,lnRow, This.Height)
Next lnRow


Por: David Amador T

Utilizar Microsoft Agent

Visual Fox Pro, Trucos Comentarios ( 1 ) »

Microsoft Agent nos permite agregarle interactividad a nuestras aplicaciones al estilo de Office, el cual puede mostrar a Merlin, Clipo, Rocky.. etc realizando diversas acciones.

Utilizaremos la clase _Agent que viene con VFP para mostrar a Merlin...

Set Classlib To Home(1) + "ffc\_agent.vcx" Additive

oAgent = Createobject( "_Agent")

With Agent
    . Load("Merlin","merlin.acs")
     .setActiveAgent(" Merlin")
    . Show(Rand() * 400, Rand() * 400)
    .speak("Bienvenidos...")

    .speak("Esta
es una prueba"
)
Endwith

 

Por: David Amador T

Dejar fija primera columna de un grid

Visual Fox Pro, Trucos Comentarios ( 0 ) »

Este es un truco bastante solicitado .... Con VFP 8 o superior ya es posible hacerlo más fácilmente. Aquí tienes 2 formas de hacerlo.

En el AfteRowColchange del Grid digita lo siguiente:

Lparameters nColIndex

Thisform. LockScreen = .T.
This.Columns(1).ColumnOrder
=This. LeftColumn
Thisform.LockScreen
= .T.

** Y en el Scrolled del Grid esto :

Lparameters nDirection

Thisform. LockScreen= .T.

If nDirection > 3
This .Columns(1). ColumnOrder = This.LeftColumn
Endif
Thisform.LockScreen= .F.

OTRA FORMA

** En el AfteRowColchange del Grid digita lo siguiente:

nPos =This. ActiveColumn-This.RelativeColumn

If nPos>0

This
.COlumn1.ColumnOrder=nPos+1

Else
This.COlumn1.ColumnOrder=1
Endif
Por: David Amador T

Wait window centrado en la pantalla

Visual Fox Pro, Trucos Comentarios ( 0 ) »

Truquito sencillo pero bueno.


lcMess = "Mesaje centrado en la pantalla"
Wait lcMess
Window At Srows()/2,(Scols()/2 - (Len(lcMess)/2))Nowait

 


Por: David Amador T

Código ESC para cortar el papel en impresoras Epson

Visual Fox Pro, Trucos Comentarios ( 0 ) »

Este truco te explica cual es la secuencia escape que debes enviar a la impresora Epson (TMU) para que corte el papel.

Set Console Off

Set Device To Printer
Set Printer To Name NombreDeImpresora

Set Print On

??? Chr(27)+"m"&& Corta el Papel

Set Print Off
Set Device To Screen

Set Printer To
Set Console On

 


Por: David Amador T

Reiniciar un campo autoincremental

Visual Fox Pro, Trucos Comentarios ( 0 ) »

Con VFP 8 apareció los campos de tipo autoincrementales; aquí tienes un truco para reiniciar el valor de dicho campo.

Alter Table (Ttabla)
Alter Column (campo) I Autoinc Nextvalue 1 Step 1

Por: David Amador T