Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Glyph desparece al descativar SpeedButton (https://www.clubdelphi.com/foros/showthread.php?t=56869)

yomismo24 29-05-2008 17:35:18

Glyph desparece al descativar SpeedButton
 
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:
Código:

+------+------+------+------+
|  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:

Cita:

Empezado por mayenes
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:

Código Delphi [-]
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.


La franja horaria es GMT +2. Ahora son las 10:19:05.

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