Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Cambiar colores por defecto de windows (https://www.clubdelphi.com/foros/showthread.php?t=92868)

strelok 27-02-2018 18:55:15

Cambiar colores por defecto de windows
 
Buenas tardes chicos,

mi objetivo es personalizar los colores de todos los componentes de mi programa, el cual esta formado por un 90% de componentes de TMS y un 10% de genéricos.
De ese 90% puedo personalizar la gran mayoría, y de los genéricos son bastante primitivos los cambios que se pueden hacer.

También me gustaría poder personalizar las barras de scroll, entre otras cosas. La única forma que encontré es usar los estilos de delphi, pero me genera un millón de problemas (no quiero entrar en detalles sobre esto, no estoy interesado en solucionarlos), por lo que quiero preguntar lo siguiente ¿existe una forma de reemplazar los colores de windows por lo que yo quiera? independientemente de que se trate de una buena o mala practica me gustaría conocer alguna forma de hacerlo.

Cuando delphi nos permite seleccionar un estilo ¿internamente como hace para cambiar los colores?

Por favor, espero que me puedan ayudar

Edición: Por si no queda claro lo que deseo hacer. Delphi en algún momento llama a la API de Windows y pregunta por sus colores, yo quisiera intervenir y asignar los míos personalizados. Porque hay cosas que no puedo controlar actualmente, como por ejemplo el color de los hint, eso provoca problemas entre usuarios que difieran de S.O (Windows 7 o Windows 10), a estos últimos le sale la letra y fondo negro.

AgustinOrtu 27-02-2018 20:10:23

Creo que Delphi en ningun momento utiliza la API de Windows para reemplazar colores. De hecho, los estilos son bitmap-based. Al parecer esta todo implementado en la Vcl (aunque no se si con simplemente descender de TControl o TWinControl alcanza para soportar estilos) y por eso los controles de TMS no se ven afectados. Ahora, creo que TMS ofrece una alternativa de estilos para sus controles.

Por otra parte, que otro problema te presentan los estilos de Delphi. Estoy al tanto de que haya muchos bugs. Probaste con Delphi Vcl Styles Utils?

Neftali [Germán.Estévez] 28-02-2018 09:29:11

Cita:

Empezado por strelok (Mensaje 524789)
..mi objetivo es personalizar los colores de todos los componentes de mi programa...
También me gustaría poder personalizar las barras de scroll, entre otras cosas.

Para eso están los estilos.

Cita:

Empezado por strelok (Mensaje 524789)
Cuando delphi nos permite seleccionar un estilo ¿internamente como hace para cambiar los colores?

Justamente al colocar un estilo, lo que hace Delphi es "no hacer caso a lo que le dice Windows" para colocar sus propios colores/imágenes (los que vienen del estilo). Así que básicamente lo que hace Delphi es interceptar el "PAINT" del componente que haría el sistema, para pintar con su código. De ahí que los estilos "ralentizen" la ejecución.

Cita:

Empezado por strelok (Mensaje 524789)
¿existe una forma de reemplazar los colores de windows por lo que yo quiera? independientemente de que se trate de una buena o mala practica me gustaría conocer alguna forma de hacerlo.

Creo que en este caso no se serviría, porque Delphi "no pregunta el color al sistema" para pintar, sino que le dice al sistema "que lo pinte él."


Cita:

Empezado por strelok (Mensaje 524789)
Delphi en algún momento llama a la API de Windows y pregunta por sus colores, yo quisiera intervenir y asignar los míos personalizados. Porque hay cosas que no puedo controlar actualmente, como por ejemplo el color de los hint, eso provoca problemas entre usuarios que difieran de S.O (Windows 7 o Windows 10), a estos últimos le sale la letra y fondo negro.

En este caso y siguiendo lo que te he comentado, lo que yo probaría sería a interceptar el "PAINT" de la clase THintWindow (http://docwiki.embarcadero.com/Libra...ls.THintWindow) para cambiar colores o "repintar" a tu gusto los Hints.


La franja horaria es GMT +2. Ahora son las 12:52:02.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi