responsabilidad civil en fallos informáticos

La semana pasada se publicó en Ciberpaís una noticia referida a la demanda de responsabilidad civil en fallos informáticos. Todos los aspectos relacionados con el ejercicio de una profesión suelen ser vistos desde un punto de vista totalmente subjetivo ya que cada uno cuenta de la fiesta como le va en ella, pero creo que sería bueno para la profesión en su conjunto que los proyectos informáticos estuvieran sujetos a responsabilidad civil, y que los distintos colectivos que integramos la profesión nos organizaramos para defender todos nuestros intereses, ofreciendo una imagen de profesión madura ante la sociedad.

humanidades versus tecnología

La pasada Semana Santa estuve con amigo Paco en Granada. Paco es de Granada, aunque vive en Córdoba, y nos hizo de guia durante nuestra estancia en la ciudad. Quedamos impresionados por los conocimientos de la cuidad, de su historia, sus vivencias y costumbres de que hizo gala Paco. Mi amigo es Licenciado en Física, pero trabaja en Informática casí desde que dejó la Universidad. El caso es que le pregunté si le gustaba estudiar Historia y me hizo la siguiente reflexión:

José Luis, no hay nada más agradecido que estudiar cosas de humanidades, ni nada más desagradecido que estudiar temas de tecnología. La Historia de una ciudad o de un país o de una determinada época es la que es, y una vez la medio aprendes ya te sirve para siempre. La tecnología es al revés: aprendes algo y cuando lo dominas casi ni te vale, porque ha quedado obsoleto y te toca aprender otra cosa. Y fijate en lo que llevamos entre manos en los últimos 15 años en el trabajo: primero los minis, luego los primeros PC con MS-DOS, a continuación Windows, redes Novell, intranets,… Y haz programas para cada plataforma: primero aprende la plataforma, luego el lenguaje que toque y dale soporte. Hay para cansarse. Yo aprendí una vez la historia de Granada, la de los Nazaris y los Reyes Católicos, y no me la han cambiado. Para mi aprender Historia es lo más agradecido del mundo.

La reflexión es totalmente cierta, y creo que todos los que trabajamos en esto lo hemos pensado más de una vez. Trabajar en Tecnología de la Información es desagradecido, pero es apasionante, con el acicate de que la evolución de la tecnología es una de las mayores causas de evolución social conocidas. Estamos inmersos en una profesión en que el aprendizaje de por vida es obligatorio y por eso los que trabajamos en esto tenemos siempre interés en aprender cosas nuevas, aunque no sean de tecnología.

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.