FoxPress – Junio 2000

 

Las Novedades de Visual FoxPro 7.0

 

         

Redacción de FoxPress

http://www.fpress.com/

 

 

Si en el número de Marzo de esta revista comentábamos  las novedades de VB 7.0 ahora le toca el turno a las novedades de VFP 7.0

 

  Un adelanto de esas novedades ya salió en la lista de correo del FoxBoard de Junio de 1999 pero poco a poco van surgiendo nuevos datos que complementan esa información:

 

 

Integración con Visual Studio

 

  1.- El producto se integra más en el Visual Studio, de hecho podrás crear nuevos proyectos Fox desde el IDE de Visual Studio.

 

  Esto no es más que un paso más en la estrategia de integración de los productos. Microsoft sigue el mismo camino que siguió con el Office. En la actualidad Microsoft  vende el Office y no los productos sueltos (Word, Excel, etc...)

 

  Lo que Microsoft llama DNA no es más que la implementación en su estructura de productos del desarrollo en tres capas. Una de las premisas de ese tipo de desarrollos es que una capa realizada con una herramienta de desarrollo puede dialogar con otra capa o componente realizado con otra herramienta: el hecho de que estés trabajando en el mismo IDE con todas las herramientas del Visual Studio  te permitirá coger la herramienta más interesante en cada caso.         

 

 

 

 

  2.- El Depurador de Visual Studio se podrá llamar desde dentro del Fox  y así podremos depurar un objeto realizado en VB y viceversa (en VB depurar un objeto Fox). Si has trabajado con COM ya sabrás las dificultades de depuración que tienen.

 

 

El IDE

 

1.- Muchas de las ventanas son ahora anclables  (ventana de órdenes,    ventana de entorno de datos, etc...) y anclables entre sí.

 

2.- El depurador es también anclable con la posibilidad de que se muestre en una ventana con pestaña al estilo de la que te sale cuando pulsas CTRL+ALT+SUPR con una pestaña para cada una de las opciones.

 

3.- El editor de programas y métodos tiene una línea gris vertical a la izquierda en la que podrás establecer puntos de          ruptura.

 

4.- Podrás Iluminar una palabra en un editor y con una tecla rápida (CTRL+ F3) buscar otras incidencias de la misma palabra.  Con soporte de comodines.

 

5.- Se pueden ver espacios en blanco, tabuladores, etc.. en los editores de programas y métodos con la opción "View Code". Esto que parece una tontería es muy interesante cuando copias y pegas código que viene de Internet pues muchas veces mete caracteres no legibles por el Fox que hace que los programas fallen y tardas un tiempo en localizar cual es el problema que está haciendo que un código muy sencillo y bien escrito esté fallando.

 

8.- Hyperlinks en comentarios.

 

9.- Para editar una página de un pageframe no tendrás que pulsar con el botón derecho del ratón y buscar la opción de  editar pues habrá una tecla rápida que permitirá hacer eso.

 

10.- Cierre de paréntesis. No tendrás que contar cuantos parámetros te faltan para cerrar un paréntesis: VFP te lo dirá.

 

11.- Un parámetro de TIMEOUT añadido a la función Messagebox()

 

12.- Intellisense como en VB pero mejor. Si escribes USE se te mostrarán las tablas recientemente usadas, o las tablas de la Base de Datos.

 

 

13.- La ventana de Procedimientos/funciones se sustituye por una ventana sin modo.

 

14.- Word-wrap en las cabeceras del Grid.

 

15.- Colores alternativos en las propiedades de la ventana de       propiedades.

 

16.- Mejora de las teclas rápidas: escribiendo MC (Modif Command) se te abrirá un nuevo .PRG, etc... y podrás configurarlo a tu gusto. MRU mostrará los formularios más recientemente

utilizados.

 

 

Mejoras  en las Herramientas

 

 

  1.- Incorpora un Driver OLE DB para Fox (no el genérico ODBC que se usa ahora)

 

  Este driver te permitirá una mejor integración con OLE/DB sobre todo a la hora de acceder a informaciones no estructuradas y una mejor integración con el ADO, sus recordsets, generación de XML, etc...

 

  El Driver controlará los eventos del DBC.

 

        También y muy importante en este campo es que podrás ponerle al driver OLE_DB de VFP un proveedor hecho con VFP (con lo que puedes hacer
proveedores para OLE_DB)

  2.- Hay una nueva Splash Screen (pantalla de logotipo de entrada de tus aplicaciones) con un  timeout que se carga inmediatamente que el usuario hace click sobre el producto. Es muy útil pues sale muy rápidamente sin que se tenga que cargar toda la runtime y  no haga dudar al usuario sobre la conveniencia de volver a pulsar en el icono de la aplicación.

 

Mejoras en el COM

 

 

1.- Los nuevos COM de Fox implementarán  interfaces. Los interfaces, en el lenguaje de
Microsoft, no son pantallas sino que desde dentro de una clase de un COM puedes llamar a otra clase de otro COM que está en otro fichero.

     2.-  Soporte de Eventos COM+ para diálogos entre aplicaciones COM. Por ejemplo, para dialogar con ADO y saber si el contenido de un campo ha cambiado.

       3.-  Aunque no figura en el documento parece que los COM soportarán el COM+, Component Sharing.

 

4.- Parece que no hay planes de incorporar los FREE Thread. La versión 6.0 +SP3 ya soporta múltiples Thread pero los crea la propia aplicación (tú no los gestionas). Incorporar FREE Thread te permitiría decidir por programa cuando lanzar los thread. De momento parece que no hay planes para esto.

5.- Soporta lo que llaman strong typing que te permite en tiempo de diseño cargar en una variable un objeto y que se te vayan mostrando las diversas propiedades y métodos de ese objeto a medida que vas escribiendo. Puedes escribir lo siguiente:


LOCAL oExcel AS excel.application
oExcel.visible=.t. (Intellisense te dará un popup con las opciones disponibles del oExcel. )


Mejoras en la Base de Datos


      1.-La Base de Datos soportará Eventos.  La lista es muy larga, pero adjunto los más representativos:


BeforeModifyProc (y AfterModifyProc)
BeforeDropRelation (y After..., etc)
BeforeRemoveTable
DBC_Closedata
DBC_Deactivate


Esto te permitirá por ejemplo encriptar y desencriptar tablas según los privilegios de los usuarios, enterarte cuando se abre una tabla, etc... Tienes métodos como "AfterOpenTable" ó "BeforeModifyTable" con lo que puedes hacer que al abrir una tabla automáticamente te haga un browse y en otra ventana otro browse del memo...
a partir de aquí puedes dejar volar tu imaginación.

 



       2.- Un interesante INPUTBOX(...) dentro de las vistas parametrizadas nos permitirá recibir una cadena de texto cuando el usuario haga algún cambio, con un tiemout. Interesante novedad a la que hay que seguirle la pista.

 

Mejoras en los menues

 

1.- Los menues se mejoran para incorporar iconos y personalización como en Office 2000 y Win 2000. (se levantan cuando el ratón pasa por encima de ellos)

 


Funciones

 

1.- Ahora los cursores son actualizables. Tendrás la opción de READWRITE en el SELECT


SELECT * FROM MiTabla INTO CURSOR MiCursor READWRITE


     2.- Podrás sobreescribir una cadena de conexión con otra en una Vista Remota con la nueva cláusula  "CONNSTRING"Asi:

 

USE MyRemoteView CONNSTRING
"Driver=... blah, blah"

      3.- Una nueva función para el tratamiento de Array’s te permitirá recoger toda la información de los índices de una tabla

 

ATAGINFO(MyArrayName, "MyTable.cdx")


       4.- BROWSE NOCAPTION te mostrará los nombres de los campos, no los que figuran en el DBC.

        5.- SYS(3054) te dará información sobre la optimización de los filtros, los join y el rushmor.

        6.- ASCAN(...) soporta un parámetro para indicar la columna del Array que se desea que se escanee, con la opción de que sea sensible a mayúsculas o no.

        7.- ASORT(...) también incorpora un flag para ser sensible a mayúsculas.

         8.- GETDIR() podrá añadir nuevas carpetas, se le podrá añadir un menú al botón derecho y será redimensionable.

        9.- La cantidad de polémicas que ha dado el DISKSPACE() que se ha ‘arreglado’ para que lea bien la información con discos duros de gran tamaño o con formatos NTFS.

       10.- OS() dará  más información sobre la versión en la que está corriendo  la aplicación como: Service Pack, Win 2000 Professional, Server, Advanced Server, Terminal Server, etc.

       11.- Nuevas formas de crear cadenas  HTML o XML, o foxscript mediante nuevas cláusulas añadidas a:


TEXT/ENDTEXT:
TEXT TO cMiString NOSHOW TEXTMERGE
.... HTML aquí ....
ENDTEXT

Esto te permite nuevas formas de crear páginas HTML ó XML  sin tener que acudir a los ‘pesadicos’ +CHR(13)+CHR(10).

       12.- Algo muy similar en el SET TEXTMERGE TO MEMVAR cMiString NOSHOW.

        13.- La función EXECSCRIPT(cMyString) ejecutará el código de la cadena que tiene dentro de los paréntesis. Es la misma funcionalidad que seleccionar una líneas en la Ventana de órdenes, hacer click con el botón derecho y Ejecutar pero disponible para usarlo por programa.

         14.- APROCINFO(aMyArray, "genmenu.prg") creará un array con 4 columnas, dos de las cuales son Nombre del Procedimiento y Número de Línea.

        15.- EDITSOURCE(nShortcutID | cFileName [,nLine] [,cClassName] [,cProcName]) te abrirá el editor con el programa abierto en una línea concreta, o en un procedimiento o en una clase.

 

 16.- Todos los que han sufrido con los Grid y en concreto con el AfterRowColChange la gozarán al saber que se incorpora una nueva propiedad llamada RowColChange que contendrá  un valor numerico indicando qué es lo que ha cambiado:


0 - nada
1 - fila
2 - columna
3 – fila y columna

Esta es una de esas novedades que justificaría por sí misma cambiarse a esta versión.

 

17.- Todos los formularios, incluidos los

"_screen",  tiene ahora una nueva propiedad identificadora del Hadle de la ventana.

      18.- ADLLS(aMyArray) construirá un Array con información sobre la dll que se ha declarado.

      19.- ALANGUAGE(aMyArray, nOption) te cargará un Array con información según la opción que se especifique:


1 - comandos
2 - funciones, con número de parámetros

3 – clases base
4 – Eventos del DBC

20.-  No te has peleado algún vez con el API de Windows... ¡Pues mira esto!

 

PROCEDURE MyProc(cParam1 AS String, nParam2 AS Number @) AS Boolean

El valor de retorno puede ser Boolean, String, o de cualquier otro tipo incluido AS VOID para indicar que el valor NULL es Correcto. El tipo VOID se necesita para los componentes  COM+ Queued Component.

21.- El VFPCOM.DLL queda integrado dentro de la Runtime. Si no lo sabes Microsoft liberó un código que permite convertir cursores a Recordsets y vicebersa y también capturar eventos de los COM que ahora ha sido integrado dentro dentro de la runtime

 


Que no tiene ó no hemos visto


No poder vincular un recodset a un Grid (por ejemplo) de la misma forma que ahora vinculas una tabla en el entorno de datos.

 

Comentarios Finales

 

Las menciones a lo que Microsoft llamó, cuando presentó Visual Basic, Servicios Web son muy vagas y genéricas .

 

Da la impresión de que el InterDev (que sigue sin aparecer por ningún lado), cuando te decidas a crear una aplicación Web,  será el que  cree de forma automática (sin que te enteres de que lo usas) las pantallas en formato HTML. El COM hecho en Fox o cualquier otro lenguaje que da soporte a ese formulario pasaría a llamarse Servicio Web. Da la impresión de que más que un Conversor de formularios a HTML (como ahora) sería un auténtico generador (una segunda generación). De todos modos, cuando al equipo de desarrollo se le preguntó sobre los Servicios Web contestaron que seguramente, en esta versión, no les dará tiempo a incorporar todas las funcionalidades que incorporará Visual Basic pero sí que podrían incorporar algunas.


Pero lo mejor es...

 

Y lo mejor.... Es que todavía les queda un año de trabajo para ir 'metiendo' nuevas features pues las que hemos comentado ya están incorporadas y funcionando.

 

¿Cuáles serán esas nuevas opciones que se incorporarán? No se sabe, pero sí que irán en la línea de integrarlo con el COM+, MSMQ, adaptaciones al Win2000, mejor gestión de threads y nuevas funcionalidades en la sintaxis tradicional para adecuarse a las necesidades de Internet.

 

De momento, las cosas que se conocen ya son un cúmulo de mayores novedades que las que aportó VFP 6.0 sobre VFP 5.0 y algunas cosas como el driver OLE DB ó los cursores actualizables, ó un evento en el Grid que te avise de los cambios en las filas o columnas ya justifica de por sí el ‘pasarse’ a esta futura versión.

 

 

FoxPress – Junio de 2000

© 1993-2000 FoxPress. All rights reserved