Delphi XE2/XE3 – Creando aplicaciones VCL con estilo

A partir de Delphi XE2 y ahora también en XE3, las aplicaciones Delphi contienen un nuevo motor de Temas y Estilos.

Esto significa que podemos hacer una aplicación visualmente más atractiva sin prácticamente ningún esfuerzo, y también que podemos añadir nuestro propio estilo personalizado a las aplicaciones.

Por hoy, veremos de manera rápida cómo realizar una aplicación con un estilo diferente en Delphi, cómo podemos interrogar a la propia aplicación sobre los estilos disponibles y cómo podemos, en tiempo de ejecución, cambiar de estilo.

Pero, primero, veamos el resultado de compilar nuestra sencilla aplicación Demo y ejecutarla:

Formulario con estilo

Agregando estilos

Con solo abrir o crear una aplicación VCL en Delphi XE2 o XE3, esta automáticamente tiene incluido soporte para Temas y Estilos. Además, podemos compilar dentro de ella algunos de los estilos que vienen de fábrica en nuestro Delphi. Para ello, vamos a `Project\Options\Application\Appearence`:

Dialogo de opciones

En la lista, podemos seleccionar los estilos personalizados que queremos incluir en nuestra aplicación.

Cuándo no hacemos esto, la aplicación únicamente incluye el estilo por defecto “Windows”, que usa el tema configurado en el sistema operativo.

Una vez seleccionamos un estilo de la lista, en la parte inferior, podemos cambiar el “Default style”, que es el estilo con el que arrancará la aplicación. Además, podemos darnos una idea de cómo lucirán los principales elementos de cada uno de los estilos haciendo uso del botón “Preview”.

Determinando los estilos presentes en tiempo de ejecución

En tiempo de corrida, podemos valernos de la clase TStyleManager, de la unidad Vcl.Themes para interrogar a la aplicación sobre los estilos disponibles, a través de su propiedad StyleNames, que es un arreglo de strings.

Así, en la aplicación Demo, rellenamos un ListBox para que el usuario pueda ver los estilos disponibles con el siguiente código:

var
  StyleName: string;
begin
  ListBox1.Items.Clear;
  for StyleName in TStyleManager.StyleNames do
    ListBox1.Items.Add(StyleName);

Cambiando el estilo en tiempo de corrida

De la misma manera, con la clase TStyleManager podemos cambiar el estilo de la aplicación, invocando su método SetStyle, a la cual pasamos el nombre del estilo a establecer.

En sus otras sobrecargas, esta función también acepta como parámetro una instancia de TCustomStyleServices o una instancia de TStyleServicesHandle.

procedure TForm1.Button3Click(Sender: TObject);
begin
  if ListBox1.ItemIndex >= 0 then
    TStyleManager.SetStyle(ListBox1.Items[ListBox1.ItemIndex]);
end;

Así, el usuario puede en tiempo de ejecución cambiar, por ejemplo, a:

  • Amakrits
    Estilo Amakrits
  • Cyan Night
    estilo Cyan Night
  • Golden Graphite
    Estilo Golden Graphite
  • Luna
    Estilo Luna
  • Silver
    Estilo Silver
  • Windows

XE3 viene con 27 estilos VCL de fábrica —incluyendo 4 estilos para Metropolis UI— acá solamente he incluido unos pocos para demostrar la variedad.

Descargas

¿Te gusta el contenido?

About these ads

6 Respuestas a “Delphi XE2/XE3 – Creando aplicaciones VCL con estilo

  1. Pingback: The Hacker’s Corner » Blog Archive » MVP Nuggets #1

  2. Buen ejemplo gracias por hacer esto por aquellos que no sabemos tanto

  3. Algo quiero comentar es porque embarcadero va tan rapido con las versiones de radstudio si no se ha probado una cuando ya esta saliendo la otra

  4. error undeclared TStyleManager?

  5. Alguna idea de como hacer que el estilo se aplique en un solo form y no en toda la aplicación?

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s