PDA

Ver la Versión Completa : Windows y Diálogos (un par de ejemplos)


dec
21-08-2011, 12:10:52
Hola,

¿Alguna vez has necesitado mostrar un diálogo desde tu aplicación creándolo tú mismo, utilizando el API de Windows? Estamos hablando, sobre todo, de cuando nos hemos visto en la necesidad de reducir el tamaño de nuestra aplicación, concretamente, del archivo ejecutable de nuestra aplicación.

Últimamente he estado pegándome un tanto con estos asuntos, y, he descubierto (mira que soy nuevo) una función maravillosa en el API de Windows: la función "DialogBox". Esta función es maravillosa porque nos permite trabajar "visualmente" con nuestro diálogo, ocupando este mucho menos que si utilizáramos otras funciones conque Delphi cuenta.

En efecto, mostrar una ventana creándola desde cero es un asunto complejo. Claro está que puede hacerse, y, con tiempo y una caña, como suele decirse, podemos obtener los resultados esperados. Sin embargo, en algunas circunstancias, crear una ventana no nos serviría de mucho. Al menos, en cierto proyecto que traigo entre manos, no me servía en absoluto, puesto que la aplicación "host" se negaba a mostrar la ventana creada de todas las maneras.

Pero, hete aquí que descubro que con la función "DialogBox" y el programa XN Resource Editor (http://www.wilsonc.demon.co.uk/d10resourceeditor.htm), por ejemplo, podemos diseñar nuestro diálogo de forma visual, y, además, resulta más sencillo de integrar en nuestros proyectos, puesto que no se requiere el uso de un "bucle de mensajes" que tal vez termine bloqueando una posible aplicación "host" en que se ejecutara la nuestra. La complejidad se reduce al usar "DialogBox", pero, no así la potencia, puesto que a veces menos es más y este parece ser otro caso.

Como no quiero enrrollarme más, simplemente, os dejo un enlace a ciertos ejemplos que he subido al Directorio del ClubDelphi (http://www.terawiki.clubdelphi.com/), de manera que vosotros mismos podéis echarles un vistazo, jugar con ellos, y, por supuesto, hacer uso de su código fuente de la mejor forma que consideréis.

Descargar: Ejemplos Windows and Dialogs.zip (http://www.terawiki.clubdelphi.com/archivos/Delphi/Ejemplos/Windows%20and%20Dialogs.zip)

Espero que a alguien le pueda resultar de cierta utilidad, aunque, ciertamente, yo he basado buena parte de mi trabajo en información obtenida de Internet, vamos, que, no invento nada con estos ejemplos, y, más de uno de vosotros ya habréis tenido que lidiar con "Windows y Diálogos" de este tipo antes. Pero bueno.

¡Hasta pronto!

Casimiro Notevi
21-08-2011, 13:50:55
Muy interesante, hasta ahora estoy usando la socorrida InputBox para este tipo de peticiones simples, aunque tiene la limitación de que sólo devuelve un valor, claro.

dec
21-08-2011, 14:19:25
Hola,

No sólo eso, Casimiro, sino que la función "InputBox" se implementa a través de la clase "TForm", de manera que el tamaño del ejecutable crece en consecuencia. Sin embargo, la función "DialogBox" pertenece al API de Windows y su uso (junto con las "plantillas para diálogos") no se nota en el ejecutable, como puedes ver en los ejemplos que he subido, que, apenas pesan unos cuantos KB.

Y de esto es, precisamente, de lo que se trata, si el tamaño es un problema o pretende uno reducirlo cuanto pueda. :)

Casimiro Notevi
21-08-2011, 15:45:11
Tienes razón, se ahorra mucho haciéndolo de esa forma.