![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Cita:
![]()
__________________
all your base are belong to us |
|
#2
|
|||
|
|||
|
Cita:
, porque Delphi (al menos, la versión 2007), no respeta transparencias cuando vienen de un ImageList. Lo malo es que hay componentes, como la ToolBar de la que hablo, o los PageControl, que no tienen "recambio". La única solución es usar iconos pequeñitos para que pase desapercibida la chapuza de los bordes.Es una pena, porque otros IDEs parece que sí lo permiten (cualquier programa de VisualStudio). |
|
#3
|
|||
|
|||
|
Solucionado!
Al final lo he solucionado
![]() Pego a continuación el código, por si a alguien le sirve. Hace falta un ImageList vacío y hay que asignar ese ImageList al componente(es) que queremos que tenga las imágenes. No olvidéis meter en uses CommCtrl y Consts, que si no, se quejará amargamente.
...y así se usa (lo he metido en el evento OnClick de un Button, para probarlo, pero iría, por ejemplo, en el FormCreate):
Según he averiguado, es un viejo problema del ImageList y sólo se soluciona como he hecho más arriba: cargando en tiempo de ejecución las imágenes en el ImageList a trabés de un TIcon (porque los TIcon mantienen el canal alfa de las imágenes) y luego pasándoselas a nuestro ImageList, que está enlazado a los componentes. Pues eso, que funciona perfectamente... pero hay un problemilla que estoy tratando de solucionar ahora mismo: no me funciona con imágenes mayores de 32x32, me da un error de tamaño incompatible. He trazado el programa y el error aparece cuando se trata de cargar la imagen de 48x48 en el TIcon. He tratado de cambiarle el Height y el Width tras crearlo, pero ni caso... También he estado investigando a ver si puedo especificar el tamaño del TIcon en el mismo constructor, pero no hay manera. En fin, si alguien se anima a echarle un vistazo, se lo agradeceré ![]() Última edición por Chandra_ fecha: 19-04-2009 a las 00:51:40. |
|
#4
|
|||
|
|||
|
¿Es que un TIcon no puede ser más grande de 32x32? Es que lo estoy intentando con todos los tamaños y el error de tamaño no válido me lo da cuando salto de 32x32 a 48x48. 16x16 va también sin problemas
![]() Por supuesto, cada vez que cambio el tamaño del archivo de icono, pongo también ese mismo tamaño en el Height y el Width del ImageList1. Pero nada... el TIcon se atranca en 48x48... ![]() ACTUALIZACIÓN: Acabo de probar a 33x33 y no funciona. El límite del TIcon está en 32x32. A ver cómo me las ingenio yo ahora para pasarle la imagen al ImageList, que sólo acepta bitmaps (inútiles parta este propósito, pues no tienen canal alfa) e imágenes tipo TIcon... ACTUALIZACIÓN2: Pues me he equivocado . Dónde falla es una línea más abajo:
Es decir, al asignar el TIcon al ImageList es cuando salta el error de "Invalid Image Size". Y no lo entiendo, porque tengo el ImageList1 en 48x48 en las propiedades Width y Height del Object Inspector. O sea, que debe ser la procedure ConvertTo32BitImageList la que joroba esos valores... ACTUALIZACIÓN 3: ¡Quito el salto a la procedure y sigue fallando! Me estoy volviendo loco No entiendo nadaACTUALIZACIÓN 4: Delphi se está cachondeando de mi: A) meto un TrayIcon en el formulario (por aquello de que tiene un TIcon como imagen, que es compatible con el tipo de imagen del ImageList), lo cargo con un icono de 48x48, le asigno el contenido de la imagen del TrayIcon al ImageList (en lugar de hacer lo de "Ico.LoadFromFile('icono.ico');", y me dice lo de siempre: "Invalid Image Size" (¡¿por qué, si el TrayIcon lo ha aceptado?!). B) Me doy cuenta de que los TrayIcon tienen la propiedad Visible en False... la pongo en True, por si acaso, y ahora... FUNCIONA (¡¡¡¿¿¿Por qué???!!!). La solución, obviamente, nome sirve de nada: no puedo llenar la pantalla del usuario de iconos de notificación para hacer mi chapuza con el ImageList... C) Me voy a la cama Última edición por Chandra_ fecha: 19-04-2009 a las 02:52:41. |
|
#5
|
|||
|
|||
|
Esto funciona con iconos de 48x48 (es ABSURDO, pero funciona):
Si pongo lo siguiente, deja de funcionar y vuelve con la chorrada del tamaño:
|
|
#6
|
|||
|
|||
|
No lo he probado pero antes de cargar el icono no se tendria q dar las dimensiones?.
La siguiente unidad tiene rutinas para trabajar con iconos e ImageList.
PD: Despues de usar ConvertTo32BitImageList cargar los iconos. Última edición por jconnor82 fecha: 20-04-2009 a las 16:47:05. |
|
#7
|
|||
|
|||
|
Gracias por tu tiempo, jconnor82.
Cita:
Código:
Proyect Proyect1.exe raised exception class EInvalidOperation with message 'Invalid Image Size'
Lo curioso es que lo siguiente no falla, pero, aunque el Height y el Width del ImageList los pongo en tiempo de diseño en 48 (lo juro), el icono final lo reconvierte a 32x32 y sin canal alfa
También da error si el ImageList no está vacío, y está ya precargado con un icono 48x48 (es decir, si por co**nes el ImageList está a 48x48). ¿Por qué sí se puede hacer si carcas el icono a través de un TrayIcon? No sé... misterios insondables de Delphi CONCLUSIÓN: Los TIcon, según les pilla, no aceptam iconos de más de 32x32. Es decir, si le van a pasar el icono a un TrayIcon, se lo pasan de 48x48 sin despeinarse; si el que recibe es un ImageList... se vuelven tontos y dicen que el icono es de 32x32 Se pueden "cazar" fácilmente las gamberradas de Delphi en el siguiente código con 4 TLabel:
Os animo a hacer las pruebas y vereis qué "divertido" puede llegar a ser Delphi... Por cierto, jconnor82, voy a probar la unit ahora, a ver qué tal me va. Luego te cuento. Ah, y muchas gracias. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| ToolBar | Paulao | Varios | 5 | 14-10-2008 22:47:49 |
| Ayuda con ToolBar | ManuelPerez | Varios | 0 | 05-03-2008 12:53:57 |
| toolbar | ercrizeporta | Varios | 3 | 17-09-2007 18:10:52 |
| Problema con un toolbar | mavm03 | C++ Builder | 6 | 02-10-2006 17:57:02 |
| mover una toolbar | Javi2 | Varios | 2 | 25-02-2005 18:56:57 |
|