trucos vfp.pdf

Download Trucos VFP.pdf

Post on 02-Jan-2016

728 views

Category:

Documents

20 download

Embed Size (px)

TRANSCRIPT

  • Trucos - Visual FoxPro LOS TRUCOS AQUI MOSTRADOS HAN SIDO RECOPILADOS DE VARIAS PAGINAS Y

    NO SON PROPIEDAD INTELECTUAL DEL AUTOR DE ESTE BLOG, HAN SIDO RECOPILADOS CON EL FIN DE QUE SIRVAN COMO AYUDA A MUCHOS

    PROGRAMADORES. Mostrar un reporte dentro de un formulario Excelente truco con el cual podrs mostrar tu reporte en un formulario. oRep =Createobject("Form") With oRep .Caption= "Titulo del Reporte" .WindowState= 2 .Show() Endwith Report Form MiReporte.frx Preview Window (oRep.Name) Hacer que hable el PC Excelente truco que utiliza el objeto COM SAPI que viene con WinXP el cual "pronuncia" lo que le escribas. oVoz = CreateObject("SAPI.SpVoice") oVoz.Speak("Visual fox Pro") oVoz.Speak("Lo mejor") Extraer informacin de los MP3 Quieres conocer la informacin de los archivos MP3 ?? ... autor, titulo, lbum, ao ... lnFile = Fopen(Getfile()) Fseek(lnFile, -128,2) lcTag = Fread(lnFile, 128) ? "Titulo: ", Strtran(Substr(lcTag,4,30), Chr(0)) ? "Artista: ", Strtran(Substr(lcTag,34,30), Chr(0)) ? "Album: ", Strtran(Substr(lcTag,64,30), Chr(0)) ? "Ao: ", Val(Substr(lcTag,94,4)) Fclose(lnFile) Suprimir ventana "Imprimiendo" en VFP 8 Uno de las nuevas caractersticas incorporadas en VFP 8, si deseas puedes impedir que se vea la ventana "Imprimiendo" que se muestra cuando ejecutas un reporte. Report Form NombreReporte To Printer Prompt NODIALOG Preview Nombre del dominio en que se logeo el PC p align="justify">Un pequeo truco para cuando quieras determinar en que dominio se logeo un determinado PC. ? GetEnv("USERDOMAIN") Determinar si una unidad de red esta disponible Esta es la forma ms sencilla para determinar si un equipo de la red esta encendido o si esta disponible una determinada unidad de red. Si la unidad esta disponible se devolver -1 y si la unidad no existe o esta apagado el PC entonces devolver -1 ? DISKSPACE("\\NombreServidor\C\")

  • Compactar base de datos de Access desde VFP Muy buen truco que permite compactar una base de datos de Access desde VFP. oJE = CreateObject("JRO.JetEngine") oJE.CompactDatabase("Data Source=" + "d:articulos.mdb", "Data Source=" + "d:articulos1.mdb") Los parmetros para el mtodo CompacDatabase son los siguientes Primer parmetro "Data Source=" + "ruta de la base de datos a compactar" Segundo parmetro "Data Source=" + "ruta de la nueva base de datos compactada" Insertando registros en Access desde VFP Este es un ejemplo bsico pero bueno de como interactuar con una base de datos de Access desde VFP. cStrConn = "DRIVER={Microsoft Access Driver (*.mdb)};" +; "Dbq=C:somedata.mdb;" +; "Uid=usuario;" +; "Pwd=password;" lnAccess = SQLSTRINGCONNECT(cStrConn) If lnAccess > 0 SQLEXEC(lnAccess, "INSERT INTO NombreTabla (campo1, campo2) VALUES(00001, 485745)") Else =MessageBox("No fue posible conectarse a la Base de Datos") EndIf Imprimir el contenido de un RTF El RTF es un control ActiveX que permite dar caractersticas al texto al estilo de Word. En el ejemplo se muestra como imprimir el contenido de este ActiveX. Para imprimir el contenido debes utilizar el mtodo SelPrint del control RTF ... With Thisform.Rtf .selstart=1 .sellength=len(.textrtf) .selprint Desplegar el Contenido de un Combo En ocasiones queremos conocer el contenido de un ComboBoX sin hacer click en l, solamente a lo que l recibe el enfoque. Esta es la forma ms fcil de hacerlo. KEYBOARD _{F4}_ En este caso agregamos este cdigo al evento GOTFOCUS( ) y cuando el Combo reciba el enfoque entonces este se desplegara mostrando la informacin contenidas en l. Desplegar un ComboBox al recibir el Enfoque II En realidad muchas veces deseamos hacer esto, pero lo pensamos bastante y no encontramos la forma de hacerlo. Por fin aqu esta su implementacin. Crea un formulario y agrgale un Combo y un Botn. Al hacer click en el botn debe desplegarse automticamente el Combo. Programa lo siguiente en el evento Gotfocus del Combo tColumna = THISFORM.Combo1.Left + THISFORM.Combo1.Width - 4 tFila = THISFORM.Combo1.Top + 2 MOUSE CLICK AT tFila, tColumna PIXELS WINDOW (THISFORM.Name) En el evento Click del botn que creaste llama al evento Setfocus() del combo, As:

  • Thisform.combo1.Setfocus() Quitar acentos de una cadenas de caracteres Algunas veces los acentos son algo molestos y nos causan inconvenientes, sobre todo al momento de realizar bsquedas dentro tablas lCadena = "El amor es el perdn ms fcil" ? CHRTRAN(lCadena, "", "aeiouAEIOU") Agregar imagen al _Screen En ocasiones queremos que en el fondo de nuestras aplicaciones, es decir en el _screen se vea el logo de nuestro programa o de la empresa. Este es un buen truco para personalizar las aplicaciones. _screen.addobject("oImg", "image") _screen.oImg.picture = "c:imagen.jpg" _screen.oImg.visible = .T. _screen.oImg.stretch = 1 _screen.oImg.width = 800 _screen.oImg.height = 600 Quitar botones de la barra del Preview Truco indispensable si deseas quitar algunos botones de la barra del preview e impedir as que se imprima desde ah o se seleccione alguna opcin. Bueno para realizar este truco te recomiendo cierres todo. Ahora ve al men VER, luego a ToolBars (Barra de herramientas), luego selecciona la barra Print Preview (VISTA PRELIMINAR) y ahora haz click en Customize (PERSONALIZAR). Ahora la barra te aparecer deshabilitada detrs de ventana de personalizacin, ve a la barra y con click sostenido quita todos los botones que quieras y listo la configuracin se guardara en Foxuser.dbf Si deseas que el usuario final no pueda acceder Solucionar problemas de Memoria con WinXP Evitar el error de Memoria en XP al ejecutar comandos de D.O.S Edita el archivo SYSTEM.INI, en la seccin 386ENH agrega la siguiente linea: PerVMFiles = 80 Invocar cuadros de dialogo de Windows Existe una forma sencilla de invocar cuadros de dialogo de Windows, tales como: Guardar, Abrir, Fuentes, Color, Impresoras, Ayuda. loComDialog = newobject( "mscomdlg.commondialog" ) locomdialog.ShowFont && Mostrar Fuente locomdialog.ShowPrinter() && Mostrar Impresora locomdialog.ShowColor() && Mostrar Colores locomdialog.ShowSave() && Mostrar Guardar loComDialog.ShowOpen && Mostrar Abrir Unidad y serial lgico de las unidades de disco De una unidad de disco es posible obtener 2 seriales: el de fabrica y el que le asigna el sistema operativo; en este ejemplo se devuelve el serial del sistema operativo. objWMI = Getobject("winmgmts:\\") cCadWMI = "Select * from Win32_LogicalDisk" oSistema = objWMI.ExecQuery(cCadWMI)

  • For Each Disco In oSistema ? "Unidad: " + Disco.Name + " Serial: " + Disco.VolumeSerialNumber Next Cancelar todos los trabajos en impresin Aqu tienes un ejemplo de como cancelar los trabajos que se esten imprimiendo utilizando WMI. objWMI = GetObject("winmgmts:\\") cCadWMI = "Select * from Win32_Printer Where Name = 'Canon S200'" objImp = objWMI.ExecQuery(cCadWMI) For Each objPrinter in objImp objPrinter.CancelAllJobs() Next Informacin del tiempo local Utilizando WMI para conocer el da, mes, ao, da del mes, nmero de semana en el mes, minutos, segundos.... etc. objWMI = GetObject("winmgmts:\\") cCadWMI = "Select * from Win32_LocalTime" oTime = objWMI.ExecQuery(cCadWMI) For Each oLocal in oTime ? "Da: " + Transform(oLocal.Day) ? "Da de la semana: " + Transform(oLocal.DayOfWeek) ? "Hora: " + Transform(oLocal.Hour) ? "Minutos: " + Transform(oLocal.Minute) ? "Mes: " + Transform(oLocal.Month) ? "Segunds: " + Transform(oLocal.Second) ? "Semana en el mes: " + Transform(oLocal.WeekInMonth) ? "Ao: " + Transform(oLocal.Year) Next Mandar un reporte a una impresora especifica * Beginning of program for Example 1 * ******************************************************* * This program assumes a report called Test which has been * saved with the default printer in the Print Setup dialog. * LOCAL lcPrinter lcPrinter = '' lcPrinter = GETPRINTER() IF !EMPTY(lcPrinter) SET PRINTER TO NAME (lcPrinter) REPORT FORM Test TO PRINTER NOCONSOLE ELSE WAIT WINDOW 'Print Job Cancelled' TIME 1 ENDIF * IMPRIMIR EN UN PUERTO USB Printing to USB Printers from FoxPro 2.6 There are several solutions, depending on your configuration. 1. If you are using a shared printer on another computer, you shouldn't have a problem. Share

  • it from the other computer, and point to it from the FoxPro 2.6 computer. 2. To print to a USB printer on the FoxPro 2.6 computer. On Windows XP and 2000, you can share the printer, then use a NET USE command to redirect LPT1 to the shared printer. This is like the Novell capture sequences. Install the printer and share it. You may need to set permissions to allow Authenticated Users to use the printer. Add NET USE LPT1: \\CRAIG\USBPRINTER to the logon script for the user's profile. For help on logon scripts, look up "To assign a logon script to a profile" in XP Help. 3. To print to a USB printer on the FoxPro 2.6 computer. On Windows XP, you can use printer pooling. Install the USB printer on the computer. Install a local printer on LPT1 (works best, or LPT2). Don't have XP search, but pick the printer by brand. Let it be similar or common printer you recognize. Now select printer properties for the new LPT1 (virtual) printer. On the ports tab, put checks for the LPT1 (for the virtual printer) and the USB for the real printer. Now choose Enable printer pooling. The DOS drivers will print to LPT1. Since XP pools the ports, the output will then be directed to the USB printer. Good luck! If this was helpful, send me ( craigr@computer-u.com ) an email. Joost Dekker of the Netherlands says "It works." Comprimir con WinZIP Puedes utilizar WinZIP para comprimir archivos desde VFP. oZip = CreateObject("WScript.Shell") oZip.Run("Winzip -a -r -p -ex c:\archivo.zip c:\Dir_a_Comprimir\*.*", 0,.T.) Release oZip oZip = Null Leer archivo INI Una alternativa muy frecuente para almacenar algunos datos de tu aplicacin son los archivo INIs ... aqu tienes la forma de leer las entradas de