Al abrir un formulario que contiene un TImageList heredado en Delphi (2010 en este caso, pero puede hacerlo para otras versiones), el IDE invariablemente (no puedo encontrar ninguna rima o ritmo para ello) agrega los datos de imagen nuevamente a la forma heredada. Esto luego aumenta el tamaño del ejecutable. ¿Alguien sabe por qué y cómo puedo evitar que suceda? Repito, la imagen tiene no cambiado.Delphi IDE cambia la lista de imágenes en archivos DFM heredados
Respuesta
Mi recomendación: nunca guarde imágenes en archivos .dfm. Siempre colóquelos en los archivos de recursos y recupere el control de su aplicación.
Este es un problema conocido con TImageList, y no hay mucho que pueda hacer al respecto excepto para seguir eliminando los datos basura nuevamente. (BeyondCompare puede ser muy útil aquí, especialmente en conjunción con el control de origen.) If you want to see it fixed, please vote for the QC report on it.
Esto no es una "solución" al problema, sino más una explicación de lo que está sucediendo. Los datos de imagen para una lista de imágenes dada se almacenan como una burbuja binaria de datos. Este conjunto de datos se obtiene de la implementación IMAGELIST subyacente de comctl32.dll.
Lo que está sucediendo es que, por alguna razón, la implementación de Windows en comctl32.dll está transmitiendo los datos de imagen de forma diferente entre la instancia "ancestro" y la instancia "descendiente". Para Windows, no hay relación entre estas dos instancias.
La forma en que funciona la herencia de formas es que realiza una comparación de propiedad por propiedad entre el "descendiente" y el "ancestro" durante la transmisión para determinar si una propiedad determinada debe escribirse en el formulario. Debido a que los datos de la imagen son una mancha opaca de sustancia pegajosa, todo lo que podemos hacer es una comparación byte a byte entre lo que la instancia de TImageList en el ancestro escribe y lo que escribe la instancia de TImageList en el descendiente. Si solo un byte fuera diferente, el sistema de transmisión no tiene más remedio que escribir los datos de la instancia descendiente con la presunción de que algo ha cambiado. Por ejemplo (y realmente no conozco los detalles ya que es opaco), si el blob de goo contenía una marca de tiempo, es concebible que cada vez que se escriba los datos serían diferentes.
Lo que hago es poner la lista de imágenes en un módulo de datos y luego agregarlo a la cláusula uses de formularios. El diseñador de formularios podrá ver la lista de imágenes
En la mayoría de mis proyectos, tengo uno o más módulos de datos de recursos que contienen este tipo de listas de imágenes. –
- 1. Buscar archivo DFM usando Delphi IDE
- 2. Delphi DFM no encontrado
- 3. Eclipse IDE. Vea la lista de todos los métodos heredados de una clase
- 4. Una manera rápida de eliminar propiedades de archivos .dfm en Delphi
- 5. Cómo implementar automáticamente métodos abstractos heredados en Delphi XE
- 6. Delphi: ¿Por qué ExplicitWidth y ExplicitHeight siguen apareciendo en archivos .DFM y qué es?
- 7. ¿Alguna vez Delphi revierte archivos de texto (DFM) a formato binario?
- 8. Cómo exportar imágenes de una lista de imágenes en VS2005?
- 9. La propiedad DoubleBuffered que se agrega en el dfm en Delphi 2009 no existe en Delphi 2007
- 10. Cómo mantener siempre PixelsPerInch = 96 en archivos DFM, incluso si Windows usa tamaño de fuente medio (125%)
- 11. ¿De qué IDE se desarrolló el Delphi IDE?
- 12. Agregue una imagen png a una lista de imágenes en tiempo de ejecución usando Delphi XE
- 13. Ejecutar archivo por lotes desde Delphi IDE
- 14. Imágenes en la lista desplegable
- 15. Delphi IDE tratar TFrame como si fuera un Formulario
- 16. Delphi IDE Project Comando "Limpio": ¿Qué hace?
- 17. ¿Hay un plugin git para Delphi IDE?
- 18. Cambia completamente el idioma IDE en Netbeans 6.8
- 19. Variables privadas en prototipos heredados
- 20. Cómo detener la maximización de la ventana IDE al ejecutar una aplicación dentro de Delphi 2010
- 21. Un proceso iniciado por Delphi IDE "Ejecutar sin depuración" hereda las variables de entorno de IDE
- 22. Cuál es la mejor IDE alternativa para Delphi (.NET)
- 23. Reemplazo de Delphi IDE "Sync Edit" en Visual Studio
- 24. Generación de un nuevo GUID aleatorio en Delphi IDE
- 25. Delphi - rellenar una lista de imágenes con iconos en tiempo de ejecución 'destruye' transparencia
- 26. Longevidad de usar el formato DFM de texto Delphi para mi propia tienda y recuperar
- 27. Cómo obtener imágenes desde la URL en Delphi
- 28. Imágenes o archivos en GNU Smalltalk?
- 29. IDE para archivos css.less dreamweaver
- 30. atributos heredados
Lo que hago es colocar la lista de imágenes en un módulo de datos y agregarla a la cláusula uses de sus formularios. El diseñador debería poder verlo – Jamie
@Jamie: ¡haz que una respuesta! –
Plugs Plugs @jeroen - Agregado – Jamie