Cómo Delphi usa archivos de recursos

Desde mapas de bits hasta iconos, cursores y tablas de cadenas, cada programa de Windows utiliza recursos. Recursos son aquellos elementos de un programa que lo admiten pero que no son código ejecutable. En este artículo, veremos algunos ejemplos del uso de mapas de bits, íconos y cursores de los recursos.

Ubicación de los recursos

Colocar recursos en el archivo .exe tiene dos principales ventajas:

  • Se puede acceder a los recursos más rápidamente porque lleva menos tiempo localizar un recurso en el archivo ejecutable que cargarlo desde un archivo de disco.
  • El archivo y los recursos del programa pueden estar contenidos en una sola unidad (el archivo .exe) sin la necesidad de muchos archivos de soporte.

El editor de imágenes

En primer lugar, necesitamos crear un archivo de recursos. La extensión predeterminada para los archivos de recursos es.RES. Los archivos de recursos se pueden crear con el Editor de imágenes de Delphi.

Puede nombrar el archivo de recursos como desee, siempre que tenga la extensión ".RES" y el nombre de archivo sin la extensión no sea el mismo que el de cualquier unidad o nombre de proyecto. Esto es importante porque, por defecto, cada

instagram viewer
Proyecto Delphi que se compila en una aplicación tiene un archivo de recursos con el mismo nombre que el archivo del proyecto, pero con la extensión ".RES". Es mejor guardar el archivo en el mismo directorio que su archivo de proyecto.

Incluyendo recursos en aplicaciones

Para acceder a nuestro propio archivo de recursos, tenemos que decirle a Delphi que vincule nuestro archivo de recursos con nuestra aplicación. Esto se logra agregando una directiva de compilación al código fuente. Esta directiva debe seguir inmediatamente la directiva de formulario, como la siguiente:

{$ R * .DFM} 
{$ R DPABOUT.RES}

No borre accidentalmente la parte {$ R * .DFM}, ya que esta es la línea de código que le dice a Delphi que se vincule en la parte visual del formulario. Cuando elige mapas de bits para botones de velocidad, componentes de imagen o componentes de botón, Delphi incluye el archivo de mapa de bits que eligió como parte del recurso del formulario. Delphi aísla los elementos de su interfaz de usuario en el archivo .DFM.

Para utilizar realmente el recurso, debe hacer algunos API de Windows llamadas. Los mapas de bits, cursores e iconos almacenados en archivos RES se pueden recuperar mediante las funciones de API LoadBitmap, LoadCursor, y LoadIcon respectivamente.

Imágenes en recursos

El primer ejemplo muestra cómo cargar un mapa de bits almacenado como un recurso y mostrarlo en un TImage componente.

procedimiento TfrMain.btnCanvasPic (Remitente: TObject);
var bBitmap: TBitmap;
empezar
bBitmap: = TBitmap. Crear;
tratar
bBitmap. Handle: = LoadBitmap (hInstance, 'ATHENA');
Image1.Width: = bBitmap. Anchura;
Image1.Height: = bBitmap. Altura;
Imagen1.Lienzos. Draw (0,0, bBitmap);
finalmente
bBitmap. Gratis;
final;
final;

Nota: Si el mapa de bits que se va a cargar no está en el archivo de recursos, el programa aún se ejecutará, simplemente no mostrará el mapa de bits. Esta situación se puede evitar probando para ver si el bBitmap. Encargarse de es cero después de una llamada a LoadBitmap () y tomando los pasos apropiados. los intentar / finalmente parte del código anterior no resuelve este problema, solo está aquí para asegurarse de que bBitmap se destruya y se libere su memoria asociada.

Otra forma que podemos usar para mostrar un mapa de bits de un recurso es la siguiente:

procedimiento TfrMain.btnLoadPicClick (Remitente: TObject);
empezar
Imagen 1. Imagen. Mapa de bits
LoadFromResourceName (hInstance, 'EARTH');
final;

Cursores en Recursos

Pantalla. Cursores [] es un formación de cursores suministrados por Delphi. Al usar archivos de recursos, podemos agregar cursores personalizados a la propiedad Cursores. A menos que deseemos reemplazar alguno de los valores predeterminados, la mejor estrategia es usar números de cursor a partir del 1.

procedimiento TfrMain.btnUseCursorClick (Remitente: TObject);
const NewCursor = 1;
empezar
Pantalla. Cursores [NewCursor]: =
LoadCursor (hInstance, 'CURHAND');
Image1.Cursor: = NewCursor;
final;

Íconos en Recursos

Si miramos a Delphi Proyecto-Opciones-Aplicación configuración, podemos encontrar que Delphi proporciona el icono predeterminado para un proyecto. Este icono representa la aplicación en el Explorador de Windows y cuando la aplicación está minimizada. Podemos cambiar esto fácilmente haciendo clic en el botón 'Cargar icono'.

Si queremos, por ejemplo, animar el ícono del programa cuando el programa se minimiza, entonces el siguiente código hará el trabajo.

Para la animación, necesitamos un TTimer componente en un formulario. El código carga dos íconos del archivo de recursos en una matriz de TIcon objetos; Esta matriz debe declararse en la parte pública del formulario principal. También necesitaremos NrIco, ese es un tipo entero variable, declarado en el público parte. los NrIco se utiliza para realizar un seguimiento del siguiente ícono que se muestra.

público
nrIco: entero;
MinIcon: matriz [0..1] de TIcon;
...
procedimiento TfrMain. FormCreate (remitente: TObject);
empezar
MinIcon [0]: = TIcon. Crear;
MinIcon [1]: = TIcon. Crear;
MinIcon [0] .Handle: = LoadIcon (hInstance, 'ICOOK');
MinIcon [1] .Handle: = LoadIcon (hInstance, 'ICOFOLD');
NrIco: = 0;
Timer1.Interval: = 200;
final;
...
procedimiento TfrMain. Timer1Timer (Remitente: TObject);
comenzar IsIconic (Aplicación. Encargarse de) luegoempezar
NrIco: = (NrIco + 1) modificación 2;
Solicitud. Icono: = MinIcon [NrIco];
final;
final;
...
procedimiento TfrMain. FormDestroy (remitente: TObject);
empezar
MinIcon [0] .Free;
MinIcon [1] .Free;
final;

En el Timer1.OnTimer controlador de eventos, IsMinimized La función se utiliza para ver si necesitamos animar nuestro icono principal o no. Una mejor manera de lograr esto sería capturar los botones de maximizar / minimizar y luego actuar.

Ultimas palabras

Podemos colocar cualquier cosa (bueno, no todo) en los archivos de recursos. Este artículo le ha mostrado cómo usar los recursos para usar / mostrar mapa de bits, cursor o un ícono en su aplicación Delphi.

Nota: Cuando guardamos un proyecto de Delphi en el disco, Delphi crea automáticamente un archivo .RES que tiene el mismo nombre que el proyecto (si nada más, el icono principal del proyecto está dentro). Aunque podemos alterar este archivo de recursos, esto no es aconsejable.

instagram story viewer