folders XP con FWH ¿ misión imposible ?

En el build de Julio de 2003, FiveTechSoft anunciaba la siguiente mejora en su librería FWH:

* Enhancement: Windows XP true folders! are ready for FWH/FW++. They are backwards compatible with your existing folders. All you have to do is change «TFolder» into FOLDER32 (or SysTabControl32) into your resources. No source code changes are required!

Como esto era algo que llevaba buscando bastante tiempo para incorporar a mis programas compré la citada actualización de FWH. Al probar el control, me encontré que éste no funcionaba bien. Las pestañas se pintaban bien y el cuerpo del folder hacía el degradado de los folder de XP, pero los controles estáticos hacían la trasparencia sobre el color del diálogo que había detrás en vez de sobre el color del folder. Asi:

Puesto al habla con FiveTechSoft estuve 2 meses esperando una solución al problema. La solución que me dieron era quitar el brush NULL del cuerpo del folder, de manera que se perdía el degradado que hace XP sobre los folder y este queda con el mismo color que la trasparencia. Comentando la linea donde se asigna el brush NULL a los diálogos del folder:

#ifndef __CLIPPER__
// oDlg:SetBrush( TBrush():New( "NULL" ) ) //byhDC
#endif

y después de ajustar los valores de coordenadas en el método Initiate del control

::aDialogs[ n ]:SetSize( ::nWidth()- 8, ::nHeight() - ::nFdHeight - 4 )

el ajuste del diálogo del folder no es total, pues queda una linea en blanco a la izquierda del diálogo que no he conseguido quitar. La cosa queda de esta manera:

O sea folder de XP a medias. Una posible solución sería pintar el dialogo de blanco o de un color de los que XP usa para el degradado, pero esa es una mala solución. Nunca se deben pintar controles con un color fijo, pues estamos yendo contra el principio de uniformidad del interfaz de usuario que debemos respetar. Si pintase el diálogo del folder de color blanco, un usuario de Windows98 o Windows2000 vería las pestañas en gris – o en el color del diálogo – y el cuerpo en blanco, lo cual sería una chapuza monumental.

Puesto de nuevo en contacto con FiveTechSoft sobre la manera de hacer diálogos como este:

la respuesta es que realmente estos diálogos son un tipo especial de diálogos llamados Property Sheet y que son como Wizards que implementa el propio Windows. Lo que no se puede hacer con WindowsXP – según FiveTechSoft – es usar folders de XP dentro de un diálogo donde haya otros controles fuera del folder además de los botones de Aceptar y Cancelar.

Mi gozo en un pozo.

Postdata. El caso es que a mi me suena haber visto un ejemplo de un diálogo así en un test de Xailer que me envió José Giménez antes del verano, pero con los últimos cambios de xHarbour no me funcionan los ejemplos que tengo de Xailer.

10 comentarios en «folders XP con FWH ¿ misión imposible ?»

  1. José Luis:

    No me hagas mucho caso, pero quiza lo que haya que hacer es utilizar algun «estilo Extendido» de Windows para el dialogo que vas a poner en la pestaña del folder.

    Que yo sepa, no todos lo editores de recursos manejan los «Estilos Extendidos» de Windows (estoy seguro que le Workshop no), pero me parece haber visto algo en el editor de C++ de Borland 5.5.

    Ya me contarás

    Saludos

  2. Hola Jose Luis,

    A mi más bien me parece que el error no está en los folders, si no más bien que el resto de controles de FW no están aún usando los nativos de Windows.

    Saludos

    Jose A. Suarez

  3. José Luis,

    por supuesto que en Xailer funciona perfectamente. Pero no sólo eso, sino que también se puede poner un bitmap de fondo (también en cualquier ventana) y los radios y checkbuttons se ven transparentes, incluso en win98!

    Es curioso, pero incluso Delphi, cuando pones radios sobre un group que está en un folder, los dibuja mal. En cambio Xailer lo hace bien.

    Seguro que Xailer tendrá bugs (es normal), pero el interface lo hemos cuidado mucho. No ha sido tarea fácil, pero creo que lo hemos conseguido.

    Un saludo,

    José F. Giménez

  4. Pues espero ansioso vuestra primera beta. Seguro que Xailer ha mejorado mucho desde la última vez que lo vi.
    Saludos,

  5. He mantenido una ínteresante conversación con Bruno, quien me indica que pueden usarse los controles directamente encima del SysTabControl32, sin usar una caja de diálogo contenedora. Se trataría pues de ocultar y mostrar controles al pasar de una pestaña a otra.

    Y, por lo visto, asi si funciona bien. Ahora tan solo hace falta implementar una solución inteligente para FWH (una clase derivada de TDialog que sea «virtual», puede ser la solución).

    Por cierto, existe vida en Jupiter!

    (las afirmaciones hay que demostrarlas, sino no sirven para nada, ó solo quedan en «vaporware» y en marineros de agua dulce, bañera y patitos de goma flotando… 🙂

    A buen entendedor, «distribuidor espabiladillo» sobra… 😉

    Antonio

  6. ¡ Antonio, pues manos a la obra !

    No puedo poner la mano en el fuego de que esto se puede hacer con Xailer, pero estoy harto de ver en la ventana de LOGIN del cliente Netware6 lo que te digo de dialogos con controles fuera de los folders con estilo XP y trasparentes. Lo que no se es como capturar esta pantalla, pues cuando se muestra no tengo ningún programa lanzado para hacer la captura.

    Seguro que se puede hacer.

    Saludos,

  7. No suelo contestar mensajes con alusiones malintencionadas, pero haré una excepción, y de paso ayudaremos a Santo Tomás a creer en lo que no ha visto 🙂

    El test está en http://www.xailer.com/files/test.zip y los ejemplos de tab y folder están en el menú Test.

    Además, aunque la beta que hay en la página data de la fecha de la reunión del GO2000 y no compila con la versión actual de xHarbour, también se puede ver un ejemplo del folder en XEdit, en las propiedades del proyecto y en la configuración general.

    Un saludo,

    José F. Giménez

  8. José F.

    El «malintencionado» no soy yo, ni tú, sino el que se ha metido en una conversación que no erá de él, y el tiempo te abrirá los ojos… 😎

    De paso mira ya quien se ha quedado el dominio web de _tu_ producto, y ya verás de cuantas más cosas se va adueñando…

    No se por qué te ha faltado el coraje de hacer las cosas tú solo (ya que _tú_ te lo has currado), y ponerle las cosas en bandeja a alguien que seguro está de puente desde el jueves hasta el martes. Y ya verás lo que le gustan las vacaciones, los puentes, el dinero, y la fama… (mientras tu eres el que trabajas).

    Antonio

  9. Antonio,

    gracias por tus advertencias. Es bien sabido que las relaciones entre IO y tú no terminaron bien, y no soy yo quien entre a valorarlo.

    Si algún día te tengo que dar la razón o quitártela, solo el tiempo lo dirá; aunque espero no tener que hacerlo nunca.

    Un saludo,

    José F. Giménez.

Los comentarios están cerrados.