Nuevo

Cómo Delphi usa archivos de recursos

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 principalesventajas:

  • 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 del archivo sin la extensión no sea el mismo que el de cualquier unidad o nombre de archivo del proyecto. Esto es importante porque, por defecto, cada 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 el archivo del 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 forma, 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 realizar algunas llamadas a la API de Windows. Los mapas de bits, cursores e iconos almacenados en archivos RES se pueden recuperar utilizando las funciones 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.Create;
tratar
bBitmap.Handle: = LoadBitmap (hInstance, 'ATHENA');
Image1.Width: = bBitmap.Width;
Image1.Height: = bBitmap.Height;
Image1.Canvas.Draw (0,0, bBitmap);
finalmente
bBitmap.Free;
fin;
fin;

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 elbBitmap.Handle es cero después de una llamada aLoadBitmap () y tomando los pasos apropiados. La parte probar / finalmente en el 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
Image1.Picture.Bitmap.
LoadFromResourceName (hInstance, 'EARTH');
fin;

Cursores en Recursos

Screen.Cursors es una serie de cursores suministrados por Delphi. Mediante el uso de 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 de 1.

procedimiento TfrMain.btnUseCursorClick (Remitente: TObject);
const NewCursor = 1;
empezar
Screen.CursorsNewCursor: =
LoadCursor (hInstance, 'CURHAND');
Image1.Cursor: = NewCursor;
fin;

Íconos en Recursos

Si miramos a DelphiProyecto-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 unTTimer componente en un formulario. El código carga dos íconos del archivo de recursos en una matriz deTIcon objetos; Esta matriz debe declararse en la parte pública del formulario principal. También necesitaremosNrIco, que es una variable de tipo entero, declarada en elpúblico parte. losNrIco se utiliza para realizar un seguimiento del siguiente ícono que se muestra.

público
nrIco: entero;
MinIcon: array0 ... 1 de TIcon;

procedimiento TfrMain.FormCreate (remitente: TObject);
empezar
MinIcon0: = TIcon.Create;
MinIcon1: = TIcon.Create;
MinIcon0.Handle: = LoadIcon (hInstance, 'ICOOK');
MinIcon1.Handle: = LoadIcon (hInstance, 'ICOFOLD');
NrIco: = 0;
Timer1.Interval: = 200;
fin;

procedimiento TfrMain.Timer1Timer (Remitente: TObject);
comenzar IsIconic (Application.Handle) luego empezar
NrIco: = (NrIco + 1) mod 2;
Application.Icon: = MinIconNrIco;
fin;
fin;

procedimiento TfrMain.FormDestroy (Remitente: TObject);
empezar
MinIcon0.Free;
MinIcon1.Free;
fin;

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.