[Lazarus-es] Cambiar apariencia widget GTK2 programas para linux
Sandro Amarain
sandroamarain en gmail.com
Jue Jul 28 14:06:34 CEST 2011
Hola José,
El 28/07/11 07:00, lazarus-es-request en lists.lazarus.freepascal.org escribió:
> Hello Sandro,
>
> Wednesday, July 27, 2011, 5:00:44 PM, you wrote:
>
> SA> Hola lista, tengo la necesidad de cambiar la apariencia visual de un
> SA> programa en linux, el problema surge cuando ejecutan el programa en otra
> SA> pc con un estilo GTk distinto, entonces se ven botones y fuentes
> SA> desfasados. Buscando por la web no encuentro nada que lo solucione, en
> SA> el wiki de lazarus aclaran que la LCL toma por defecto y da prioridad al
> SA> tema instalado en el sistema por una cuestión de compatibildad
> SA> multiplataforma.
> SA> Pero existe la posibilidad de aplicar un tema específico?
>
> No. La solución es que tu código funcione correctamente esté como esté
> definido el skin de GTK. El mismo problema lo tendrías en Windows con
> diferentes "themes" con o sin aero, classic Windows, etc...
> Básicamente lo único que tienes que hacer es escalar los controles en
> función del DPI del medio (pantalla en este caso) y opcionalmente en
> función del tipo de fuente usado.
>
> Recientemente se ha añadido a Lazarus un ScaleBy que debería escalar
> los controles y el form. Yo no lo uso ya que me he escrito bastante
> antes mi propio scaleby que se adapta un poco mejor a mis gustos.
>
> La idea básica es que en tiempo de diseño calculo lo que ocupa un
> texto tipo como "The quick brown fox jumps over the lazy dog" y en
> tiempo de ejecución lo comparo con la fuente actual y aplico el
> ScaleBy correspondiente.
>
> Algo como:
>
> Const
> TextReference='The quick brown fox jumps over the lazy dog';
> TextReferenceSizeX=233; //Por ejemplo
> TextReferenceSizeX=21; //Por ejemplo
>
> procedure Form1.AfterConstruction;
> var
> X,Y: Single;
> begin
> X:=Self.TextWidth(TextReference)/TextReferenceSizeX; //O era al revés?
> Y:=Self.TextHeight(TextReference)/TextReferenceSizeY;
> Self.ScaleBy(x,y);
> end;
>
Muchas gracias, toda tu explicación ha sido muy clara.
> SA> Hay alternativas de pago para windows, como lazskin ó themeEngine, pero
> SA> busco otra cosa, algo gpl ó la manera de hacerlo por código para linux,
> SA> aunque también habría versión para windows.
>
> Es una mala idea aplicar skins a menos que tu aplicación sea algo
> multimedia que quieres que quede "espectacular". Todos los skins
> suelen fallar en cosas, suelen ser lentos, y consumen memoria. En
> Linux además está "mal visto" tener un skin que se salga del standard
> definido por el usuario.
>
En cuanto a los skins, mis usuarios no dicen lo mismo, les gusta que las
distintas identificaciones de las empresas tengan distintos colorcitos...
Saludos y reitero las gracias por tu tiempo y explicación.
More information about the Lazarus-es
mailing list