completando FSDI: un método llamado SetSize()

Una de las cosas de las que carecía nuestro interfaz TFSDI era del ajuste a la ventana principal de la aplicación al redimensionar esta. En el post anterior se ve en una de las capturas que se publicaron en el artículo de PcActual como queda un trozo de ventana sin el diálogo FSDI encima. Esto es debido a que al crear el diálogo FSDI calculamos las coordenadas que debe tener este y lo ponemos en la zona cliente de la ventana principal de la aplicación, pero al cambiar el tamaño de esta no sabiamos como ajustar el diálogo FSDI con sus controles.

La verdad es que la cosa parecía difícil de resolver. Habiamos hecho varios intentos sin resultado, y en la última reunión de GO2000 José Luis Capel nos enseñó una aplicación con un aspecto similar a las nuestras pero con el ajuste a la ventana perfectamente conseguido. La manera de hacer esto por parte de José Luis era usando paneles, y estuve preguntándole varias cosas pero sin resultado. Lo de los paneles era un auténtico lio, o eso me parecía. El caso es que buscando la manera de ajustar di con un ejemplo en la carpeta SAMPLES de FWH en el que nunca había reparado: fwbios.prg. En este ejemplo se hace un ajuste de un listbox definido por código a una ventana mediante el método SetSize() de aquel, invocado al redimensionar la ventana. El caso es que el método SetSize() pertenece a la clase Window y lo heredan todas las clases que derivan de ella, o sea
todos los controles. Este método permite ajustar el tamaño de cualquier control que haya sido definido por código, como por ejemplo el taskbar, xbrowse y tabs que uso en mis diálogos FSDI además del propio diálogo. Y yo sin enterarme ni de que existía este método.

Lo único que he tenido que hacer es que los objetos taskbar, xbrowse y tabs que aparecen el cada diálogo FSDI sean datas de mi clase TApplication que es la que controla la ventana principal, de manera que al redimensionar la ventana pueda acceder a estos controles para ajustarles el tamaño mediante el método SetSize(). En breve publicaré la edición gratuita de Azeta que es el primer programa donde implemento esto.

Anuncios

5 comentarios en “completando FSDI: un método llamado SetSize()

  1. José Luis,

    Yo utilizo paneles porque no ‘incrusto’ diálogo en el area cliente libre. En mi aplicación puedo tener un browse y otro panel conteniendo otros controles. El motivo principal de hacerlo así y no colocando diálogos es que el diseño del mismo se puede modificar ‘on the fly’, es decir, en tiempo de ejecución, según una parametrización externa a la aplicación. Este sistema, según mi opinión, aunque inicialmente me pudiera dar más ‘quebraderos de cabeza’ luego me ha demostrado que puedo modificar la presentación de mis aplicaciones sin cambiar diálogos, solo parámetros.

    Un saludo!
    José Luis Capel

  2. Julio: en anteriores entradas sobre la clase hay una versión antigua que puedes descargar. Quiero preparar un ejemplo sobre la nueva clase y subirlo en breve.
    Saludos,

  3. Gracias y espero el link, la version a subir es para pruebas con (x)Harbour+FWH o solo 16 bits ?

  4. How I can make a window as

    with vtaskbar and tfsdi classes

    Can You create a mini sample with a vmenu on the left and a browse on the right ?

Los comentarios están cerrados.