Archivo de la categoría: UX

Barra de Progreso Infinitas.

Ventana con barra de progreso infinita

Estaba dando una de mis recurrentes revisiones al ClubDelphi. Cuando me encontré con un hilo en dónde un colega pedía un sugerencia para medir mediante un TProgressBar el proceso de conexión al servidor de Base de datos. A cómo ya sabrán algunos, medir cuánto tardará en establecerse una conexión, es cómo tratar de determinar el movimiento de las partículas cuánticas.

Por eso, le he sugerido cambiar de paradigma y utilizar una barra de progreso infinita (tienen varios nombres, pero así las conozco yo). Nunca había intentado hacer una, pero dando una pequeña hojeada a MSDN, veo que no es tan difícil de conseguirla con Delphi. A continuación el código necesario:

procedure TForm1.FormCreate(Sender: TObject);
var
    CS: Cardinal;
begin
    CS := GetWindowLong(Self.ProgressBar1.Handle, GWL_STYLE);
    CS := CS or PBS_MARQUEE;
    SetWindowLong(Self.ProgressBar1.Handle, GWL_STYLE, CS);
    SendMessage(Self.ProgressBar1.Handle, PBM_SETMARQUEE, Integer(True), 0);
end;

Para utilizar el código anterior, debes agregar la unidad CommCtrl a la sección de Uses de tu unidad. Es esa unidad está definida las constantes PBM_SETMARQUEE y PBS_MARQUEE.
Referencias:

http://msdn.microsoft.com/en-us/library/windows/desktop/bb760816(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/bb760820(v=vs.85).aspx#PBS_MARQUEE

http://msdn.microsoft.com/en-us/library/windows/desktop/bb760842(v=vs.85).aspx

PD: El código requiere de la versión 6 de los Common Controls de Windows. Por lo que sólo se ejecutará en Windows XP y posteriores. Además, requiere que tu aplicación tenga activo los temas visuales.

[ACTUALIZACIÓN]: A cómo oportunamente apunta Román, Delphi 7 no trae definidas las constantes PBM_SETMARQUEE y PBS_MARQUEE. Así que hay que declararlas.

const
  PBS_MARQUEE = $08;
  PBM_SETMARQUEE = WM_USER+10;
Anuncios
Etiquetado ,

Messagebox con etiquetas personalizadas

El problema:

Con la llegada de Windows Vista, los clásicos mensajes de dialogo en Windows serían -según muchos- cosa del pasado. Estoy hablando de la llegada de los nuevos TaskDialogs. Siendo muy potentes tienen unos inconvenientes que nos impide acogerlos al cien por ciento. Primero: como desarrollares responsables, no podemos -por el momento- desarrollar exclusivamente para Windows Vista y versiones posteriores. Además, desde Delphi y su implementación de los TaskDialogs mediante la clase TTaskDialog no puedes mostrar este tipo de mensajes cuando los temas del sistema están deshabilitados. Por último, al ser muy potentes tienen cierta complejidad que para tareas sencillas sería más cómodo hacer una simple llamada a la función Messagebox.

Sin embargo, los viejos MessageBox de Windows tienen un problema de usabilidad: El usuario tiene que leer todo el mesaje para poder tomar una decisión. La solución a este problema está en usar etiquetas descriptivas en los botones y dejar a un lado los viejos “SÍ/NO/CANCELAR/etc.”. Obviamente surge la pregunta: ” ¿Cómo puedo cambiar las etiquetas de este tipo de dialogo desde Delphi? Es muy sencillo y pasa por utilizar Hooks proporcionados por la misma API de Windows.

Sigue leyendo

Etiquetado , , ,

Usa Verbos en las Etiquetas [Léelo!]

Para iniciar  mi primer post, quisiera hablar de un tema muy importante pero aveces descuidado entre algunos desarrolladores. Se trata de las etiquetas que le asignamos a los botones. En mi presentación personal he dejado en claro que mis artículos tendrán connotación hacía la usabilidad, por eso es que quiero empezar con con este tema.

Uno de las principales reglas para hacer un buen diseño, es evitar que el usuario piense en cosas irrelevantes. Esto quiere decir, que la funcionalidad presentada por la interfaz debe ser obvia, no ambigua. Siempre es mejor utilizar un verbo o una simple palabra que describa lo que un botón hará, antes de utilizar el típico “Aceptar“. Fíjate en el siguiente ejemplo:

Venta de datos de contacto con el clásico "Aceptar"/"Cancelar"

La ventana anterior incluye el típico “Aceptar”/”Cancelar”. Sin embargo, la funcionalidad el botón Aceptar puede ser ambigua en este caso. ¿Qué es lo que  “Aceptar” realmente hace?

En cambio…

Venta de contacto mejorada visualmente

La ventana anterior deja muy en claro lo que el botón, anteriormente llamado “Aceptar”, realmente hace -Guarda los cambios que pueda realizar un usuario-.

Aunque no parezca, estos pequeños cambios hacen un gran cambio en la usabilidad de nuestras aplicaciones. Y lo más importe,  aumentan la confianza que desarrollan los usuarios con nuestras aplicaciones, al evitarles sentirse que pueden cometer un error porque no saben lo que realmente están haciendo, ya que la interfaz es ambigua. Porque un Look & Feel” no es solo una cuestión visual, sino sentimental -de ahí el “Feel” en la expresión-.

En un futuro Post estaré ampliando este mismo tema. Abarcaré como resolver con Delphi este tipo de problemas en los MessageBox de Windows. Por ahora me despido. Saludos desde mi cede ;)

P.D.: Si hay llegado a este Post por la palabra “Léelo!” en el título, deberías darte cuenta de lo eficaz que es una simple palabra.
Las ventanas aquí mostradas fueron realizadas en Delphi 2009
Etiquetado , , ,