FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Alguna sugerencia para sistema d skin?
Hola.
Os comento, estoy desarrollando un sistema de skins para un programa, mediante este sistema de skin me gustaria cambiar varias imagenes del programa, cosa que consigo satisfactoriamente y también cambiar diferentes propiedades (color, color del borde...) de diferentes botones, checkbox, listbox, groupbox, etc.. los colores que deberan utilizarse se guardan en un ini. Cada grupo de componentes (por ejemplo todos los botones), llevarian la misma variable, es decir, todos los botones irian con borde negro y color gris, y asi con todos los componentes del programa que quiera cambiar. El problema me surge a la hora de asignar ese color a cada uno de los componentes, puesto que mi metodo, no se si es el mas correcto, pero es el único que se me ocurre. Consiste en mostarar en un listbox todas las subcarpetas que existen dentro de \skin\ y una vez selecionada una subcarpeta cargará el ini que lleva dentro esta subcarpeta, con todas las propiedades que deben adjudicarse a los componentes. Hasta aquí todo bien, es decir, cargo bien el ini y cargo bien las imagenes. El problema se da cuando tengo que adjudicar cada color a cada boton, puesto que son bastantes componentes (varios botones, varios checkboxs, varios radiobuttons, etc..), mi metodo para hacerlo es el siguiente: Primero accedo al fichero ( tinifile.create(blblabblbla..) ), y a continuación: Código:
boton1.color := fichero.readinteger('botones','color',boton1.color); Espero que me puedan hechar una mano, porque la verdad que cargar uno a uno las propiedades d cada componente es algo pesado.. Si alguno sabe o se le ocurre alguna otra forma d crear skins que sean facil d cargar aunque no usen ini, o no se.. vayan de otra forma pues se lo agradeceria. Muchas gracias de antemano. |
#2
|
|||
|
|||
A mi se me ocurre que podrías establecer la propiedad tag de los botones por ejemplo a 1
Esto lo harías en tiempo de diseño... Luego recorriendo la matriz de controles comprobarias se el tag coincide con el que tu le asignaste y así podrías hacer la asignación del color
Esto yo no lo he probado, pero debería funcionar end;
__________________
Hay dos cosas infinitas: el Universo y la estupidez humana. http://www.cybertarjetas.net |
#3
|
|||
|
|||
Perdón, se me ha colado una cosilla
__________________
Hay dos cosas infinitas: el Universo y la estupidez humana. http://www.cybertarjetas.net |
#4
|
||||
|
||||
casi mejor que con el tag se puede hacer con el operador is para verificar la clase:
aunque lo realmente interesante seria verificar la propiedad 'Color' en runtime y cambiarla, para ello hay un par de funciones muy interesantes en TypInfo.pas, por ejemplo vease esta funcion que cambia el 'Color' a todos los componentes del form que tengan 'Color':
|
#5
|
|||
|
|||
Hola de nuevo.
Muchisimas gracias, por ahora solo he probado la opción que me ha dado Novás y me va perfecta para lo que quiero, aunque no dejaré de probar tanto las de ruina , como todas las que propongais. Me habeis ayudado mucho. Pues lo dicho, muchisimas gracias de nuevo, sois todo/as magnificos |
#6
|
||||
|
||||
bueno, enredando enredando he hecho un ejemplito que creo que es bastante parecido a lo que estabas intentando hacer:
y el ini seria de la forma Código:
[TButton] Color=1205 Caption=hola [TCheckBox] Checked=true color=23123 [Memo1] BorderStyle=bsnone [Button1] Caption=Boton Nº 1 |
#7
|
||||
|
||||
valla, a ver si apendo a escibir con porpiedad....
|
#8
|
||||
|
||||
bueno, tenia un ratillo libre asi que le he dado un por de vueltas de tuerca al asunto.
Bien, estabamos en que podiamos asignar propieades a las Clases o a instancias concretas por el Nombre del componente, pero... No podiamos hacer algo tan util como: Código:
[TLabel] Font.Name=MS Sans Serif afortunadamente podemos usar la función GetObjectProp, basicamente es GetOrdProp con un resultado formateado a Tobjetc Bueno, me dejo de rollos y meto codigo (he intentado que sea lo menos criptico posible):
|
#9
|
||||
|
||||
Usar el componente http://www.torry.net/vcl/packs/inter...entpackage.zip , es gratuito
__________________
:) |
#10
|
||||
|
||||
Componente para SKIN
La componente que mencionan, no tiene version para Delphi 7
__________________
Optimus Prime |
#11
|
|||
|
|||
Has probado la de Delphi 6?? El 99% de las veces funcionan sin problemas, y el 1% restante tienes que hacer unos cambios minimos.
|
|
|
|