EssentialFox 2004
Inicio

Pre Conferencias

Sábado Mañana

Sábado Tarde

Domingo Mañana

Domingo Tarde

Lunes Mañana

Lunes Tarde

Galerías

 

... a Conferencias

 
Anuncios






 
© PortalFox

EssentialFox 2004

Reporte de la Conferencia DevEssentials 06.06.2004 – Sesión mañana

Por Amby

A pesar de ser domingo en la mañana, cuando eran las 8.00 AM, estaba el salón lleno para comenzar la segunda jornada de trabajo de la Conferencia DevEssentials 2004

Planes de Microsoft. Perspectivas para el desarrollador. Por Dave Schmitt – Especialista principal de tecnologías en Microsoft.

El Sr. Schmitt comentó sobre la estrategia y hoja de ruta presente y futura en la que está trabajando y basando su estrategia Microsoft. Comenzó diciendo que Microsoft es por y para los usuarios, por y para los desarrolladores de aplicaciones. Microsoft está interesada en las perspectivas, proyectos, roles y comunidades de desarrolladores, porque de ellos depende su negocio.

Expresó el concepto de .Net Enterprise Union como Usuarios + Operaciones + Ventas + Suministros + Ingeniería, en estos aspectos incluyó temas como Servicios Web XML, la transmisión y el rol de experiencias, la seguridad en la red.

Estrategia de Microsoft: Está enfocada en dos puntos fundamentales:

Usuarios: Proporcionar un soporte fuerte, especialmente para los nuevos usuarios, fomentar trabajo en las comunidades para aplicar los productos y técnicas más novedosas y trabajar de forma constante, al lado del usuario de productos Microsoft.

Negocios: Propicia la interoperabilidad y la inclusión de herramientas de terceros (add-ins propios)

Productos: Microsoft tiene una gran gama de productos que comprenden casi todos los tipos de dispositivos (device) y cubren casi todos los tipos de aplicaciones.

Muchos productos son bloques de negocio, son componentes programables.

Muchos productos son plataformas, soportan productos de otros

La estrategia de productos / plataformas está unificada; pero… está limitada por la tecnología actual y .Net necesita superar estas limitaciones.

Sobre la hoja de ruta comentó brevemente:

2003

VS.Net, Windows Server 2003, MS Office, VS Office Tools WSE 2.0

En Octubre 2003 – Conferencia de desarrolladores

2004

Yukon, Widbey

2005

Longhorn, Orcas

De ambos se espera sacar una Beta en 2005, con libre descarga y el producto en 2006

Sobre los desarrolladores en .Net comentó que actualmente hay un incremento considerable de desarrolladores .Net, que cada vez más se adopta la plataforma .Net en nuevos desarrollos. Mostró varios estudios comparativos donde se ve la curva que muestra este incremento.

Hizo un breve resumen de Whidbey. Lo definió como el corazón de la tecnología.Net. El lenguaje, IDE y las nuevas características aportan más comodidades al programador, por simplificar la programación, ayuda en captura de errores, mejoras en cuanto a productividad y seguridad, simplifica el desarrollo para los llamados Smart Clients.

Habló sobre las mejoras de ASP.Net 2.0, productividad, extensibilidad, modelos consistentes para almacenar y para Interfaz de usuario. Tiene significativas extensiones o sustituciones de subsistemas significativos, con fácil adaptación al entorno existente. Con relación a la Interfaz de usuarios: cómodos controles, fácil adaptación a las características de interfaz de Longhorn, mejoras en la administración de configuraciones, ya que introduce API de configuración que ofrece acceso de lectura/escritura a las aplicaciones y otras.

Comentó sobre la Interoperatibilidad entre las versiones actuales y las futuras que se están desarrollando. Según Microsoft “Nadie lo hace mejor” (Nobody does it Better)

Hizo un resumen sobre las características de Longhorn.

-         Soporta toda la tecnología anterior, porque tendrá una fuerte compatibilidad.

-         Es la futura versión de Windows.

-         Va a introducir un Manager OS API.

-         Está enfocado en tres áreas primarias:

o       presentación (Avalón – introduce método unificado para Interfaz de usuario)

o       Datos (Win FS)

o       Comunicaciones (Indigo)

Para finalizar, resume diciendo que:

-         .Net está diseñado para múltiples lenguajes

-         Visual Studio soporta múltiples compiladores

-         Todos los lenguajes Inter-operan con .Net

Pues hasta aquí, un breve resumen de lo expresado… ¿y dónde está el Fox? … Pues, … no está, ya lo vemos y no está por dos razones, primero porque DevEssentials en una Conferencia con tres tópicos que son Fox, SQL y .Net y esta conferencia estaba dedicada a los especialistas en .Net. Otra razón es que el ponente estaba repitiendo la sesión que había ofrecido en un público eminentemente .Net, por lo que se disculpó al no tener información sobre Visual FoxPro. Y … aunque ya sabemos que la información sobre VFP la tenemos de primera mano del Product Manager, Ken Levy, de todas formas, les dejo la dirección de correo electrónico ofrecido por Dave Schmitt – Especialista principal de tecnologías en Microsoft, para todo aquel que desee comunicarse y obtener información. dschmitt@microsoft.com

Pues, … seguimos, café en mano, vamos en busca de un tema muy importante, vamos a escuchar sobre Office Automation, de la mano de una experta – Tamar Granor. Voy con su libro, Microsoft Office Automation, recién comprado, para pedirle una firmita.

Office Automation avanzada (Advanced Office Automation) Tamar Granor Microsoft Most Valuable Professional (VFP)

Tamar Granor ha expuesto temas de Automation en varias oportunidades en Conferencias de desarrolladores, parece como si todo estuviera dicho, nos comenta que comenzar a emplear Automation no resulta complicado, las tareas cotidianas se pueden programar desde VFP, lo que está debidamente comentado y documentado, el objeto ahora es más bien ver las tareas más complejas, que incluyen las respuestas a eventos de Office, situaciones como abandono de sesión, caídas de servidor, etc

Existen diferencias entre los componentes de Office que hay que tener en cuenta, porque afecta el proceso de Automation desde VFP.

1.- Al instanciar y crear múltiples instancias mientras  Excel y Word permiten crear múltiples instancias,  PowerPoint y Outlook están restringidas a únicas instancias. Las implicaciones de estas diferencias están dadas a las referencias que se hacen desde VFP, para múltiples instancias, múltiples referencias, para PowerPoint y Outlook se pierde la referencia anterior por la nueva que se está creando.

Muestra como si probamos crear una instancia de PowerPoint vía Automation y otra desde la interfaz de Windows, en la lista de tareas de Windows, vemos que aparece una sola instancia de PowerPoint, así que … cuidado que tiene trampa, no son todos iguales.

2.- Al salir de Word, PowerPoint o Outlook el ejecutable se cierra; pero en Excel, queda aun en memoria, hasta que se libere la variable que creó la referencia al mismo. Esto es importante ya que requiere comprobaciones en el código.

IF VARTYPE(oWord) = "O" AND TYPE("oWord.Name") = "C"

   * El servidor está funcionando

ENDIF

Esto… no funciona en Excel, para ello Tamar nos propone el siguiente código, donde emplea una propiedad lShouldBeVisible, la que hay que verificar ante cualquier acción relacionada con el servidor:

LOCAL lReturn

IF IsNull(oXL)

  * No hay servidor instanciado

  lReturn = .F.

ELSE

  * Compara el valor Visible actual, para explorar la visibilidad

  IF oXL.Visible = lShouldBeVisible

    * Coinciden, quiere decir que el servidor está abierto y funciona bien

    lReturn = .T.

   ELSE

    * No coinciden, quiere decir que 

    * es possible que el usuario abandonó la sesión.

    lReturn = .F.

  ENDIF

ENDIF

RETURN lReturn

3.- Visibilidad en Power Point, no se puede acceder muchas de sus propiedades si no está visible (Ej. ActivePresentation), y una vez que se hizo visible no se puede ocultar, este comando da error:

oPowerPoint.Visible = .F.

4.- Plantillas en Excel y PowerPoint, al crear un documento, simplemente hace una copia de la plantilla como punto de partida, en Word, por su parte, un documento nuevo contiene copias de los estilos y las macros de la plantilla. Esto significa que al hacer cambios en la plantilla estarán reflejados en los documentos que se basen en ellas.

Cierre de servidores

Pasamos al tema de servidores que se han cerrado por causas de código ineficiente, acción del usuario, fallas del sistema operativo, etc. Tamar, emplea varias APIs de Windows para:

-         Buscar cada instancia de la aplicación

-         Verificar si aun está o no visible

-         Si no está visible, la detiene

Aquí les dejo el código:

FUNCTION KillApp

*=================================================

* Program:       KillApp.PRG

* Purpose:       Cierra cualquier instancia invisible de una aplicación

* Author:         Tamar E. Granor

* Copyright:     (c) 2002 Tamar E. Granor

* Last revision: 04/16/02

* Parameters:   tcClassName - the classname of the app to close

* Returns:        Cantidad de instancias cerradas; -1, si es parámetro problems

*=================================================

#DEFINE GW_CHILD 5

#DEFINE GW_HWNDNEXT 2

#DEFINE WM_CLOSE 0x10

 

LPARAMETERS tcClassName

 

ASSERT VARTYPE(tcClassName) = "C" AND NOT EMPTY(tcClassName) ;

   MESSAGE "KillApp: Es necesario pasar el nombre de la clase de la aplicación a cerrar"

  

IF VARTYPE(tcClassName) <> "C" OR EMPTY(tcClassName)

   ERROR 11

   RETURN -1

ENDIF

 

DECLARE LONG GetDesktopWindow IN win32api

DECLARE LONG GetWindow IN WIN32API LONG hWnd, LONG wCmd

DECLARE LONG IsWindowVisible IN WIN32API LONG hWnd

DECLARE LONG GetClassName IN WIN32API LONG hWnd, STRING lpClassName, LONG nMaxCount

DECLARE LONG PostMessage IN WIN32API LONG hwnd, LONG wMsg, LONG wParam, LONG lParam

 

LOCAL lnDesktopHWnd, lnHWnd, lnOldHWnd, lcClass, lnLen, nClosedCount

 

lnDesktopHWnd = GetDesktopWindow()

lnHWnd = GetWindow( lnDesktopHWnd, GW_CHILD)

lnClosedCount = 0

 

DO WHILE lnHWnd <> 0

   lcClass = SPACE(256)

   lnLen = GetClassName( lnHWnd, @lcClass, 256)

   lnOldHWnd = lnHWnd

   lnHWnd = GetWindow(lnOldHWnd, GW_HWNDNEXT)

   IF UPPER(LEFT(lcClass, lnLen)) = UPPER(tcClassName)

      lnVisible = IsWindowVisible(lnOldHWnd)

      IF lnVisible = 0

         PostMessage( lnOldHWnd, WM_CLOSE, 0, 0)

         lnClosedCount = lnClosedCount + 1

      ENDIF

   ENDIF

ENDDO

RETURN lnClosedCount

Un ejemplo concreto para Word podría ser:

FUNCTION KillWord

*=================================================

* Program:       KILLWord.PRG

* Purpose:       Cierr cualquier instancia invisible de Microsoft Word

* Author:         Tamar E. Granor

* Copyright:     (c) 2002 Tamar E. Granor

* Last revision: 05/10/2002

* Parameters:   (None)

* Returns:        Cantidad de instancias cerradas

*=================================================

LOCAL lnKilled

lnKilled = KillApp("OpusApp")

RETURN lnKilled

Ortografía

Luego ejemplificó como trabajar la ortografía desde varios componentes de Office. Sobre este tema vemos que:

-         VFP no trae control ortográfico

-         No se puede utilizar el motor de control de ortografía fuera de las aplicaciones Office, como un producto stand-alone, sólo se puede desde dentro de las aplicaciones.

-         Existen varias posibilidades de solucionar, por ejemplo: utilizando el método CheckSpelling (para resultados del tipo Verdadero/Falso), y otra es con el método GetSpellingSuggestions (para correcciones) 

Trabajar con propiedades de los documentos

Todas las aplicaciones Office permiten trabajar con propiedades para sus documentos y permiten definir propiedades personalizadas, aunque la forma de mostrarlas varía entre las aplicaciones. Es muy importante el trabajo que se hace con las colecciones, lo cual tiene matices en dependencia de la aplicación Office de que se trate. Sobre esto hay que tener en cuenta que los elementos hacen una copia de las colecciones y los cambios no impactan al original.

Responder a eventos de Office

Existen dos métodos para trabajar con los eventos de Office.

El primero, función EventHandler() es útil sólo cuando sabe que su aplicación VFP se está ejecutando cuando el usuario está trabajando en Office. Para ello es necesario, utilizar el Examinador de objetos para encontrar la interfaz, luego se arrastra desde allí para crear un esqueleto del código, instanciar la clase manipuladora de eventos (event handler class) y el servidor y enlazar con EventHandler().

El segundo método puede utilizarse también cuando no haya aplicación VFP en ejecución, para ellos es necesario crear un add-in, que es un documento especial en estas aplicaciones, que contiene código, pueden ser cargados interactivamente o via Automation.

Un manipulador de eventos add-ins necesita dos componentes: Una clase que contenga el código del manipulador de eventos y un código aparte que conecte esa clase con la aplicación, que es justo lo que hace el EventHandler().

Entonces, es necesario, crear  un add-in con código VBA en el editor Visual Basic, utilizar Automation para abrir un servidor y cargar un add-in y luego enlazarlo a los datos VFP via ADO u objeto COM.

Puede esta forma hemos visto como Automation es mucho más que crear, abrir, imprimir, guardar y cerrar documentos… nos queda como siempre mucho por seguir estudiando…. Me voy con mi libro firmado por la autora y la ilusión de leerlo lo más pronto posible para profundizar en estos temas.

… Voy en busca de otro café… el tema ahora es más sencillo… De nuevo con Cathy Pountney, esta vez para comentar sobre trucos y experiencias con el IDE de VFP y les aseguro que habrá para todos… Antes de comenzar le pido a Cathy haga una foto de los asistentes a su sesión, que como siempre está llena hasta el tope.

Secretos ocultos del IDE de VFP – (Hidden Secrets of the VFP IDE) Cathy Pountney

Por Amby

Nos confiesa que siempre empieza por los informes, es que Cathy es una apasionada al tema, ya lo vimos ayer,  es una experta, ha escrito mucho sobre el Generador de Informes y lo explica con verdadera pasión, veamos:

Diseñador de informes.

  • Navegar entre objetos - En VFP 8, puede navegar entre los controles de un informe simplemente utilizando Tab para el control siguiente y Shift+Tab para el control anterior.
  • Modificar una etiqueta existente - Seleccione el objeto y luego presione Ctrl+E, lo que activa el modo edición.
  • Selección múltiple entre objetos – Para VFP 9.0, tenemos el cuadro de diálogo Selección Múltiple, que deja establecer las propiedades Imprimir cuando (Print when) y Protección (Protection) para los objetos que han sido seleccionados, todos los selecciondos de una sola vez, ¡¡¡ Bien !!! Si se desea establecer las propiedades para todos, Ctrl.+A y ya está. Aquí, un detalle más …, la opción Ordenar por (Sort by), permite ordenar por Tipo (Type) o Localización  (Location) dentro del informe

Diseñador de formularios

  • Llegar a los objetos dentro de los contenedores – Esto me gustó mucho, ahorra tiempo. Con Ctrl+Clic sobre un objeto VFP “pasa por encima” del contenedor y nos permite tomar el control del objeto que está dentro. Hay más, si existen contenedores dentro de otros contenedores, puede utilizar Ctrl+Shift+Clic para profundizar aun más en el nivel.
  • Controles ListBox y ComboBox  El carácter “\” tiene significado especial para habilitare inhabilitar elementos entre otros.
  • Controles Grid Cuando está dentro del grid, Tab mueve el cursor entre sus columnas, utilice Ctrl+Tab para navegar hacia el control posterior al grid o Ctrl+Shift+Tab el control anterior.

Editor –  El editor es el sitio donde solemos pasar más tiempo, de ahí la importancia de aplicar estos trucos y ahorrar el mayor tiempo posible.

  • Vista de documento – Para navegar a través de elementos de la lista, Ctrl+PageUp y Ctrl+PageDown. No necesita saltar a la Vista de documentos, navegar por el, y luego saltar al programa.
  • Marcadores Para mí esto es novedoso, el empleo de marcadores para, saltar entre diferentes secciones de código, para ello, hay que marcar la ubicación existente presionando Alt+Shift+F2. Luego, ir al otro código que necesita mirar y al finalizar, presionar F2 ó Shift+F2 para regresar al código anterior
  • Cuadro de diálogo Buscar - Al utilizar el carácter “\” no buscará el carácter de barra inversa, en su lugar, provocará que el diálogo Buscar busque otros caracteres especiales. Hay varias combinaciones: \t, \r, \n, \\, Ah y les cuento que “\r” y “\n” tienen algunas trampas.  Desde este mismo cuadro de diálogo se permite el uso de caracteres comodines, que fueron ejemplificados por Cathy.
  • Operadores expansión, Se cumple que: cVar++  y barra espaciadora se convierte en cVar = cVar + 1, ¿lo sabían? Pues yo no y me ha parecido muy bueno, ahorra tiempo y evita muchos problemas de errores de escritura.

Ventana Propiedades

Esta ventana ha tenido muchas mejoras en la nueva versión de VFP, 9.0, incluyendo una ficha nueva, Favoritos (Favorities).

Además hay varios aspectos que se pueden personalizar:

-         Fuente (Font) – Clic derecho – Font y se abre el cuadro de diálogo para seleccionar la fuente

-         Colores – Se pueden establecer diferentes colores de fuente, que identifiques los diferentes tipos de Propiedades, métodos y eventos (ActiveX, Propiedades no predeterminadas, propiedades instanciadas, propiedades custom)

Nos habló también de las ventanas Comandos, y Examinar se detuvo en algunos comandos, habló del Depurador, que debatimos ayer,  con su IntelliSense incluido en la versión 9.0, el Task Pane e IntelliSense, que veremos mañana y describió el resto de las nuevas herramientas que aparecen en el IDE de VFP a partir de versión 8.0.

¿Sabían que al  presionar Mayúscula y seleccionar el menú Archivos cambia la opción Cerrar por Cerrar todo y Ocultar por Ocultar todo?  Por su parte  Mayúsculas + Formato – Fuente cambia la fuente de la pantalla, por tanto, cambia la fuente de la pantalla de VFP.

Es muy útil saber que a partir de VFP 8, el Administrador de proyectos permite Arrastrar y soltar  múltiples archivos a la vez. Además, el Administrador de proyectos es suficientemente inteligente como para colocar cada archivo en su ficha correspondiente, en dependencia de la extensión del archivo. ¡Qué bien!

RTF – En VFP 9.0 el portapapeles mantiene el formato de texto enriquecido Rich-Text-Format (RTF). Ahora al copiar del editor de códigos de programa a un

Archivo de Word se mantendrán los colores.

En la versión 9.0 puede definir el formato de fuente – Font - para el Administración de proyectos – Clic derecho y Fuente (Font) … dice Cathy que esto es muy bueno, para nosotros que nos estamos haciendo viejos, y ahora podemos agrandar la letra y ver mejor  J

SYS(1037) Antes de VFP 9.0 el valor retornado no era significativo, ahora se le ha incorporado un nuevo parámetro con valor devuelto que tiene información útil al desarrollador. Por ejemplo:

SYS(1037,1) – Si el área de trabajo actual contiene una estructura que coincida con una estructura de FRX se abre el cuadro de diálogo Configuración de página, en caso contrario, devuelve cero. Si se abre el cuadro de diálogo devuelve 1 / 0 en dependencia de la acción del usuario, entonces:

0 – El usuario canceló o la estructura no es válida

1 – El usuario seleccionó OK, el FRX se actualizó correctamente.  

Ahora si que estamos acabando, sólo dos pinceladas que nos deja Cathy con ese estupendo buen humor que tiene.

  • Programas libres de errores - ¿Saben que escribir programas libres de errores, es muy fácil con VFP? Escriban: ON ERROR * (Por supuesto, esto no significa que sus programas están libres de fallas. Significa solamente que no se emitirán mensajes de error por el sistema).
  • No salir de VFP -  Si no quiere salir de VFP, escriba ON SHUTDOWN *. No importa, cuánto se esfuerce, no podrá salir de VFP. Para reparar los daños, escriba: ON SHUTDOWN

Esta sesión ha estado interesante y divertida, les he dejado sólo un resumen, el texto completo sobre estos temas aparece traducido y publicado en PortalFox. Vea más detalles en los siguientes enlaces: http://www.portalfox.com/article.php?sid=1043 y http://www.portalfox.com/article.php?sid=1044 Además el texto íntegro de esta presentación que incluye estas y nuevas características para VFP 9.0 estará traducido próximamente en PortalFox, así que … lo mejor es mantenerse en contacto.

Bueno, un receso para comer que nos queda mucho por aprender todavía.

Hasta aquí el reporte de la sesión de la mañana.

Espero que sea de utilidad,

Saludos,

Ana

www.amby.net

 


Todas las marcas y los logos utilizados en este sitio son propiedad de sus respectivos dueños.
Los artículos, noticias y comentarios son propiedad y responsabilidad de sus respectivos autores.
Copyright © 2000-2007 PortalFox. Todos los derechos reservados.