2010-06-25 12 views
13

Delphi 2010, Win32 VCL. Necesito crear un menú principal para mi aplicación con el aspecto más estándar. TMainMenu se ve bien en todas las versiones de Windows, lo único malo es cuando muestra imágenes para elementos con Enabled = False.Ugly "disabled" imágenes de TMainMenu

Delphi tiene algún método extraño para la construcción de que las imágenes de discapacidad (b/w extrusión con biseles, para mí parece que spew). Quiero hacer un parche para ese procedimiento en las fuentes de VCL y dejar que el menú seleccione imágenes desactivadas del mismo TImageList, pero no puedo encontrarlo.

¿Es que existe en absoluto o es alguna llamada a la API estándar de Windows? ¿Sabes dónde está ubicado ese procedimiento?

estilo Claro OwnerDraw puede arreglar todo esto, pero quiero una solución poco más rápido.

Respuesta

22

Hay una gran publicación en Galfar's Lair blog que describe el problema, y ​​tiene un código para una solución, anulando el método TImageList DoDraw.

Aquí está el pic (vinculados) que muestra el 'antes' y 'después'.

alt text

creo que esto se relaciona con casi todas las versiones de Delphi.

+0

¡Genial! Anularé TCustomImageList.DoDraw y la imagen desactivada se copiará de la segunda mitad de la imagen almacenada 32x16. Gracias Roddy y Galfar. – Andrew

+0

¡Brillante! ¡Necesito este! –

4

Si usted puede proporcionar imágenes como PNG que puede utilizar TPngImageList de PngComponents. Tiene diferentes opciones para hacer una imagen deshabilitada combinada o grayscaled. El formato PNG le permite utilizar alphablending.

Cuestiones relacionadas