Archivo de la categoría: Como hacer …

Centrado de ventanas

Estimados usuarios de Xailer,

Los formulario de Xailer tienen una propiedad de nombre lCentered que permite indicar si la ventana ha de mostrarse centrada o no.  El centrado se produce con la totalidad de la pantalla y si el usuario tiene dos monitores, se centro en el monitor donde se está ejecutando la aplicación. No obstante, están proliferando monitores cada vez más grandes y sobre todo más anchos y la visualización centrada en el monitor puede no ser la correcta.

Os vamos a mostrar un pequeño truco,  -que además servirá para entender algo más la sobrecarga de clases de Xailer-, para centrar la ventana sobre su formulario padre. Este es el código:

CLASS TForm FROM XForm
  METHOD Show( nCmdShow, lCenter )
END CLASS

METHOD Show( nCmdShow, lCenter ) CLASS TForm
   LOCAL nDifW, nDifH
   DEFAULT lCenter TO ::lCentered
   IF lCenter .AND. ::oParent:IsKindOf( "TForm" )
     nDifW := Max( (::oParent:nWidth - ::nWidth) / 2, 0 )
     nDifH := Max( (::oParent:nHeight - ::nHeight) / 2, 0 )
     ::nLeft := ::oParent:nLeft + nDifW
     ::nTop := ::oParent:nTop + nDifH
   ENDIF
   ::Super:Show( nCmdShow, .f. )
RETURN Nil

Basta con poner este código en cualquier parte de su código y a partir de entonces los formularios que tengan la propiedad lCentered a verdadero se mostrarán centrados respecto a su formulario padre y no con respecto al monitor.  Espero que os haya gustado.

Un saludo

 

Cómo Crear Citas en Google Calendar desde Xailer

Hace unos días me vi  en la necesidad de implementar a uno de mis clientes acceso a google maps y a la creación de eventos en google calendar. El tema de los mapas lo pude resolver fácilmente gracias a la estupenta aportación que Bingen hizo en su momento.

Para integración del calendario no me quedó más remedio que calzarme las botas de explorador y ponerme a investigar cómo podía hacerlo. Un ratico en google y en seguida me di cuenta de que atacar a la mayoría de los servicios de google (calendario, contactos, youtube, etc..) es francamente fácil… siempre y cuando utilices  .net

Xailer por un lado, .net  por el otro, ¿Cómo resolverlo?
En un principio pensé en crear una aplicación de consola en VB y hacer una llamada con ShellExecute, pasándole los datos como parámetros. Lo probé y funcionaba, pero fui incapaz de hacer que el programa en VB le devolviera a Xailer si la operación había tenido éxito o no.

Necesitaba una forma en que los dos programas se comunicaran entre sí… Una especie de cliente servidor básico… ¡¡Los Sockets!!

A partir de un artículo de José Alfonso en chochurro, me puse a investigar cómo establecer comunicación entre distintas aplicaciones y aquí está el resultado.

Sigue leyendo

Browses elásticos

En Xailer, cuando usamos la propiedad nAlign o nAnchors a un browse, éste se ajusta dinámicamente a las dimensiones del formulario, pero no pasa lo mismo con su contenido, las columnas del browse.

Nunca me ha gustado mucho este comportamiento, así que tenía dos opciones: o quejarme amargamente porque no funcionaba como yo quería, o remangarme y cambiar su funcionamiento.

Y.. bueno… digamos que me quejo poco.

Sigue leyendo

Multivisor: Cómo ver 500 formatos de archivos usando 90 líneas de código

En mi ya larga experiencia usando xailer, siempre he tenido dos espinitas clavadas que se me habían resistido especialmente:

La integración de controles ActiveX en mis programas y la posibilidad de visualizar limpiamente archivos pdf dentro de un formulario sin tener que recurrir a trucos con el explorer que se empeña en que me aparezcan las barras de herramientas de acrobat cada vez que intento visualizar un documento.

Pues bien, hoy vamos a matar dos pájaros de un tiro y ver cómo hacer ambas cosas.

Hace un tiempo, gracias a un plugin para total commander descubrí la tecnología Outside in de Oracle que nos permite acceder, transformar y controlar el contenido de cerca de 500 formatos de ficheros.

Imaginaros mi sorpresa al ver que además disponía de un control activex para acceder a esa maravilla. Total, que no me pude resistir, y aquí está el resultado.

Sigue leyendo