PDA

Ver la Versión Completa : Glyph desparece al descativar SpeedButton


yomismo24
29-05-2008, 17:35:18
Hola
pues me pasa lo siguiente, tengo un par de speedbuton con imagenes bmp cargadas. El problema es que cuando desactivo un boton, (pongo propiedad enable a false) la imagen que tengo cargada desaparece. Al volver activarlo vuelve a aparecer, pero lo que me gustaría es que la imagen se mostrase siempre tanto con el boton activado como desactivado.
Lo que más me extraña es que solo me pasa con algunas imágenes y no tengo ni idea de porqué.
¿Alguien me puede echar una mano?
Muchas gracias y un saludo!!

roman
29-05-2008, 17:54:38
La propiedad Glyph del SpeedButton -tal como se menciona en la ayuda- puede contener más de una imagen, de manera que uno puede indicar qué imagen usar para cuando se inhabilita el botón. Si sólo se proporciona una imagen, el componente intenta emular el estado inhabilitado convirtiendo a grises. El problema con esto es que con algunas imágenes, el algoritmo de la conversión deja todo en gris causando el efecto de desaparecer.

Lo más adecuado es que proporciones tú mismo la imagen deseada para el estado inhabilitado.

// Saludos

Caro
29-05-2008, 18:25:54
Roman, me puedes indicar por favor en que propiedad asigno la imagen deshabilitada, en el ToolBar pasa lo mismo, pero esta la propiedad DisableImage para colocar las imagenes, pero en el SpeedButton no encuentro donde.

Saluditos

roman
29-05-2008, 18:33:43
Todas las imágenes se ponen en la propiedad Glyph, es decir, el bitmap que le pongas debe contener las dos tres o cuatro imágenes una después de otra:

+------+------+------+------+
| 1 | 2 | 3 | 4 |
| | | | |
+------+------+------+------+

1 - normal
2 - inhabilitada
3 - presionada
4 - apachurrada


// Saludos

maeyanes
29-05-2008, 18:34:41
Hola...

En los TSpeedButton tienes que crear una imagen con los dos estados, uno junto al otro... esto es, una imagen de 32x16 y tener primero el estado habilitado seguido del estado deshabilitado.

Edit:

Veo que me ganó la mano Román :D


Saludos...

roman
29-05-2008, 19:37:18
Marcos, en tu mensaje original habías puesto algo que yo había olvidado y que es importante, por ello lo reproduzco:


Entonces en la propiedad NumGlyphs del TSpeedButton pones 2...


// Saludos

maeyanes
29-05-2008, 19:41:35
Hola...

Bueno, en realidad yo eliminé esa parte del mensaje por que el componente detecta si hay más de un glyph en la imagen y establece automáticamente la propiedad...


Saludos...

roman
29-05-2008, 20:00:48
¡Ah! Pues tienes razón. Aunque supongo que más que detectar adivina, y adivinará correctamente siempre y cuando las imágenes no sean cuadradas :)

// Saludos

maeyanes
29-05-2008, 20:07:50
Y si...

Usa este código para determinar el número de glyph de la imagen:


if Value.Width mod Value.Height = 0 then
begin
Glyphs := Value.Width div Value.Height;
if Glyphs > 4 then
Glyphs := 1;
SetNumGlyphs(Glyphs)
end


Saludos...

Caro
30-05-2008, 05:15:34
Perdon por responder recien. Muchísimas gracias roman y mayanes, me ha quedado todo claro.

Saluditos

yomismo24
30-05-2008, 10:31:24
Hola
muchas gracias a todos por vuestras respuestas, me han sido de mucha utilidad. Cuando abrí el hilo nos esperaba tantas respuestas y tan rápido :).
Un saludo para tod@s.