Inicio > Ejemplos, XE2 > Testeando XE2… (Estilos)

Testeando XE2… (Estilos)

martes, 13 de septiembre de 2011 Dejar un comentario Ir a comentarios
Share Button

Otra de las cosas de las que ya he hablado y que llaman la atención en esta nueva versión de Delphi, son los estilos. Es una primera implementación y es mejorable en muchos aspectos, pero es una paso más y un avance más para poder personalizar nuestras aplicaciones.

Hay que decir que el funcionamiento general es muy sencillo.

estilos1

Estaría bien, por ejemplo, mejorar el generador de estilos para que se pudieran importar estilos desde otros archivos similares. En mi caso el generador se ha mostrado “poco estable” cuando he intentado hacer algo más complejo (cambio de imágenes) que intentar modificar los colores del estilo cargado.

Por internet podéis descargar varios videos sobre el uso del “VCL Style Designer”, que así es como se llama la herramienta para crear y modificar los estilos. Aunque es bastante sencilla e intuitiva. Una vez cargado el estilo, podemos modificar los diferentes elementos. Se puede exportar la imagen del estilo completo, modificarla desde un editor externo y luego volverla a cargar, para poder así asignar elementos de esa nueva imagen a los diferentes componentes. Se pueden cargar varias imágenes y combinar elementos de varias de ellas; Pero como he dicho en estas operaciones se ha mostrado “inestable”

Los componentes que derivan de los estándar cogen de forma correcta los estilos.  Lo que no he podido probar (y no parece que exista ahora solución -digo esto sin habérmelo mirado mucho-) es qué posibilidades hay para componentes “externos” que no deriven de uno estándar.

Una creado o modificado un estilo podemos cambiar los campos que identifican al creador, desde la misma herramienta de creación (autor, versión, página web y correo electrónico). Mientras que la previsualización desde el “Style Designer” funciona bastante bien (salvo cuando hay algun error que no muestra nada -tampoco el error-), desde el IDE de Delphi la previsualización es defectuosa (podrían haber utilizado el mismo método que desde el Designer) o “floja” por decirlo así.

En resumen, aunque el sistema tiene algunos detalles todavía faltos de pulir, en general me parece un acierto el poder dotar de esta posibilidad a las aplicaciones que se realicen. El sistema es muy sencillo de utilizar y aunque tiene algunas limitaciones, funciona bastante bien.

Actualmente al cargar instalar Delphi XE2 contamos contamos con 5 estilos que podemos utilizar.

Desde la web de Rodrigo podeís descargar algunos que él ya ha creado y es de esperar que los miembros de la comunidad vayan “colgando” los suyos propios a medida que los vayan creando (para eso supongo que se ha distribuido). Desde ahí mismo podéis consultar la explicación detallada de cómo crear nuevos estilos a partir de los existentes.

El código para cargar el estilo es bastante simple a partir de su nombre:

0
1
2
3
4
5
6
7
8
9
10
Var
  Estilo:TStyleManager;
  i:integer;
begin
  Estilo := TStyleManager.Create;
  try
    i := Random(6);
    Estilo.SetStyle(lEstilos[i]);
  finally
    Estilo.Free;
  end;</p>

En mi caso cargo los estilos de forma aleatoria a partir de un array donde los tengo definidos.

0
1
2
3
4
5
6
// Ini estilos</p>
lEstilos[0] := 'Windows';
lEstilos[1] := 'Aqua Graphite';
lEstilos[2] := 'Aqua Light Slate';
lEstilos[3] := 'Emerald Light Slate';
lEstilos[4] := 'Golden Graphite';
lEstilos[5] := 'Ruby Graphite';</p>

Hasta aquí esta primera visión. En general me ha parecido positivo. Algunos aspectos por pulir, pero creo que es un detalle más, que hace subir puntos a esta versión.

Un saludo.

Share Button
Categories: Ejemplos, XE2 Tags: , , ,
  1. Aion
    jueves, 15 de septiembre de 2011 a las 06:52 | #1

    Aun no me he bajado una versión de prueba (más que nada por el tiempo), pero dime neftali, has probado AlphaControls? Si es así estos estilos tienen el mismo potencial? Los componentes se pueden animar? Los componentes pueden tomar otro estilo que no sea el suyo propio? Es decir puedo mostrar un panel con la apariencia de un botón?

    En cualquier caso buen review, y cada bes me entran más ganas de probar el XE2.

  2. Neftalí
    jueves, 15 de septiembre de 2011 a las 08:14 | #2

    @Aion
    Hola Aion.
    La primera impresión que me han dado es que esta primera implementación es bastante sencilla (pero suficiene). He probado algun otro componente de skins (comercial) y son bastante más completos que estos, pero imagino que es un comienzo.
    Supongo que si necesitas algo más puedes ir a FireMonkey que ya es otro mundo y supera mucho los componentes de skin comerciales.

    Revisa esta demo (sencilla) de FireMonkey que hay aquí.

    Un saludo.

  3. Aion
    jueves, 15 de septiembre de 2011 a las 16:26 | #3

    @Neftalí
    Wooo, simplemente genial el demo (gracias), creo que sí que hay que ir presupuestando esta versión (lástima que solo hay compilador de 64 para Delphi y dejan a c++ para la próxima), nos vemos.

  4. Neftalí
    viernes, 16 de septiembre de 2011 a las 09:05 | #4

    @Aion
    Hola Aion.
    Bueno creo que esta versión viene muy “cargada” de novedades; Es bastante posible que ya no les diera tiempo de incluir más. Esperemos que para la próxima versión, como dices, vega incluído para C++.

    Un saludo.

  5. Silver
    martes, 27 de septiembre de 2011 a las 13:27 | #5

    Hola Neftali!

    Muy interesantes todas tus entradas, como es habitual!!.

    En referencia a los estilos, quería hacerte una pregunta: ¿Sabes si es posible cambiar aspectos como el color de fondo de un Tedit,un Tform… en tiempo de ejecución?. He utilizado estos estilos en algún aplicación y veo que los controles no pueden actualizarse, como por ejemplo edit1.Color := Clblue….?

    Gracias,

    Silver.

  6. Neftalí
    martes, 27 de septiembre de 2011 a las 16:58 | #6

    @Silver

    Hola Silver.
    No acabo de entender tu pregunta en cuanto al cambio de color. Puedes cambiar los colores de los componentes en tiempo de ejecución y también puedes cambiar el estilo en tiempo de ejecución.

  7. Silver
    jueves, 29 de septiembre de 2011 a las 19:58 | #7

    @Neftalí

    Hola Neftali, quizás no utilizo bien los estilos. Por ejemplo, si colocamos en un formulario simplemente, un tbutton y tedit con el fondo blanco, y decimos que al pulsar el boton “edit1.color := Clred” su fondo será rojo. Si yo aplico un estilo a la aplicación a través de Project-Options-Appearancce, al ejecutar mi aplicación se aplica el estilo seleccionado, pero cuando pulso el botón para cambiar la apariencia del Tedit, el fondo no toma el color Clred, queda siempre con el estilo por defecto. Esto era la duda que te lanzaba. Utlizo la última versión el Update1 :-(.

  8. Neftalí
    viernes, 30 de septiembre de 2011 a las 09:21 | #8

    @Silver
    Hola Silver.
    Ahora sí te he entendido. Supongo que el problema es que al aplicar estilos, dejas el trabajo de “dibujado” de los componentes al sistema. Habrá que investigar si hay opciones de hacer un cambio como este, pero ahora mismo no sé que posibilidades puede haber.

    Un saludo.

  9. Ivan
    martes, 11 de octubre de 2011 a las 00:46 | #9

    Gracias Neftali por tus aportes. Tienes idea donde consigo el source code del ejemplo FMControlsDemo.zip ? Gracias.

  10. Neftalí
    martes, 11 de octubre de 2011 a las 07:31 | #10
  11. jofebas
    jueves, 11 de diciembre de 2014 a las 21:24 | #11

    Hola. estoy utilizando los vcl.Themes y cuando llamo un form dentro de otro se desactivan sus botones de cerrar, minimizar, etc. y también los mainmenus.

    tendrán alguna idea de como corregir este problema?

  12. Neftalí
    viernes, 12 de diciembre de 2014 a las 08:52 | #12

    @jofebas
    ¿Y si desactivas los temas no te pasa?

  13. jofebas
    viernes, 12 de diciembre de 2014 a las 17:11 | #13

    @Neftalí
    Hola.
    si al desactivar los temas y regresarlo a tema Windows, todo funciona perfecto.
    Los bordes los tengo como Single, ya los he cambiado y nada.
    la posición es poDesigned.
    y los llamo con este código:

    Windows.SetParent(Form1.Handle, Panel1.Handle);
    Form1.Show;

  1. Sin trackbacks aún.
What is 21 + 6 ?
Please leave these two fields as-is:
IMPORTANTE! Para continuar, debes contestar la pregunta anterior (para evitar SPAM) :-)