delphi components delphi-xe

La mejor forma de crear un ícono de componente en Delphi XE utilizando solo las herramientas integradas



components delphi-xe (4)

En Delphi 7, se incluye un programa editor de imágenes, que puede leer y escribir archivos .dcr , que son meramente archivos de recursos binarios (archivos .res ) con una extensión diferente, lo que por convención indica que el archivo .dcr contiene un recurso compilado con recursos de mapa de bits nombrados que tienen nombres correspondientes a los nombres de sus componentes (un recurso de mapa de bits llamado TMYCOMPONENT para un componente denominado TMyComponent). Estos mapas de bits son los "íconos" que se usan para poner un ícono en la paleta de componentes Delphi, y en su formulario o módulo de datos cuando se suelta un componente no visual, proceden de.

Avanzamos 10 años hasta Delphi XE, y estoy tratando de hacer iconos de componentes usando un archivo de mapa de bits, y un archivo RC, y tengo esa compilación en un archivo .DCR, como parte del IDE de Delphi.

Debería ser simplemente una cuestión de agregar un archivo .Rc y una declaración como esta en el archivo .dpk (fuente del paquete), así:

{$R mypackageicons.rc mypackageicons.dcr}

Un ejemplo de archivo .rc que contiene un icono de componente:

// COMPONENT ICON RESOURCES TMYCOMPONENT BMP "TMYCOMPONENT.BMP"

Sin embargo, no puedo hacer que esto funcione. Parece que obtienes algunos errores RLINK32 extraños y bloqueos IDE en borlandmm.dll, cuando lo intento:

[DCC Error] E2161 Error: RLINK32: Unsupported 16bit resource in file "C:/temp/compicon/COMPONENTICONS.rc" [DCC Fatal Error] F2084 Internal Error: AV21515155-W06000D07-1

El archivo de mapa de bits en cuestión es un tamaño de archivo bmp de 256 colores, 24x24 píxeles, y también he probado 16 mapas de bits en color, sin suerte. Me parece que el programa ImageEdit es la única forma que conozco que puedo usar para crear íconos de componentes Delphi.

¿Qué me estoy perdiendo?

Actualización: las herramientas externas son una buena solución para las personas que no tienen acceso al editor de imágenes Delphi 7, y de hecho pueden ser superiores, pero yo preferiría hacer esto usando solo lo que se incluye con Delphi, porque parece que debería ser posible usando solo una declaración {$ R}, un archivo de texto y un archivo bmp hecho con pincel. Seguramente no omitieron hacer una forma de hacer íconos de componentes, ¡con esta gran gran herramienta de desarrollo de 1.5 gigabytes! .. update2: Y hay una manera; Rudy V. lo encontró.


He utilizado y tuve un gran éxito con:

Actualizar

Acabo de probar lo siguiente, en XE, y tuve éxito.

  • Creé un nuevo componente, TNewAnimate , en NewAnimates.pas .
  • Agregué TNewAnimate.pas a dclusr.dpk .
  • Agregué un mapa de bits (llamado TMRUComboBox.bmp , acabo de tenerlo de todos modos) usando el diálogo Proyecto → Recursos e Imágenes ... al .dpk y le di el nombre TNEWANIMATE .
  • Reinstalé dclusr.dpk .

El archivo de origen de dclusr.pdk obtuvo una nueva entrada {$R *.dres} (tenga en cuenta la extensión). Pude ver el TNewAnimate en la paleta de ejemplos con el glifo en TMRUComboBox.bmp .

Localicé dclusr.dres en el mismo directorio que dclusr.dpk (que normalmente está en C: / Archivos de programa , pero no en mi configuración). Traté de abrirlo con XN Resource Editor, pero eso se negó a abrirlo con un mensaje de error críptico. No es un archivo .res normal, parece.


Investigué las respuestas anteriores usando Delphi XE5 upd2. No hay mucho éxito. Así que traté de construir una nueva solución y encontré una derivada de respuestas anteriores.

En resumen: 1. Crea tu mapa de bits usando el programa Windows Paint. 2. Cree un archivo de script de recursos con el mapa de bits. 3. Compile el script con BRCC32 para producir el archivo dcr 4. Incluya el archivo dcr en el origen del paquete 5. Recompile / Install the package

Para automatizar esto, es suficiente agregar la línea de comando BRCC32 en el proyecto del paquete "eventos previos a la construcción". De esta forma, su archivo dcr se volverá a crear antes de cada compilación.

Para una descripción detallada, vea mi blog en http://francois-piette.blogspot.be/2014/02/howto-create-dcr-file-for-your-delphi.html


Primero agregue el archivo ''mypackageicons.rc'' al proyecto, esto produce ''mypackageicons.res'' en tiempo de compilación (consulte la answer SO relacionada a la pregunta "Incluir archivo de recursos en un proyecto por archivo .RC en lugar de archivo .RES").

Incluya también {$R mypackageicons.res mypackageicons.dcr} en la unidad componente (o en .dpk). Esto no produce un ''archivo .dcr'', pero establece el ícono para el componente.


Tenga en cuenta que mi prueba con un recurso ''BMP'' falló. Usé ''BITMAP'' como tipo de recurso.