Testeando XE2… (Estilos)
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.
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:
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.
// 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.
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
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.
@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.
@Germán Estévez
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.
@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.
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.
@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.
@Germán Estévez
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 :-(.
@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.
Gracias Neftali por tus aportes. Tienes idea donde consigo el source code del ejemplo FMControlsDemo.zip ? Gracias.
@Ivan
Hola Iván.
Pues posiblemente en el repositorio de Embarcadero para XE2.
http://radstudiodemos.svn.sourceforge.net/viewvc/radstudiodemos/branches/RadStudio_XE2/
CReo que es este:
http://radstudiodemos.svn.sourceforge.net/viewvc/radstudiodemos/branches/RadStudio_XE2/FireMonkey/ControlsDemo/
Un saludo.
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?
@jofebas
¿Y si desactivas los temas no te pasa?
@Germán Estévez
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;
Si coloque un tema desde el menu Appearence en Options: como vuelvo a la normalidad?
@Giuliano
Hola.
En el menú de aplicación desactivas la opción «Enable runtime Themes».
En la sección de Appearance deben quedar todos desactivados y en Default Style debe quedar «Windows».