Novo

Como o Delphi usa arquivos de recursos

Como o Delphi usa arquivos de recursos

De bitmaps a ícones, cursores e tabelas de strings, todos os programas do Windows usam recursos.Recursos são os elementos de um programa que oferecem suporte ao programa, mas não são código executável. Neste artigo, mostraremos alguns exemplos do uso de bitmaps, ícones e cursores a partir de recursos.

Localização dos Recursos

A colocação de recursos no arquivo .exe possui dois principaisvantagens:

  • Os recursos podem ser acessados ​​mais rapidamente porque leva menos tempo para localizar um recurso no arquivo executável do que para carregá-lo de um arquivo de disco.
  • O arquivo e os recursos do programa podem estar em uma única unidade (o arquivo .exe) sem a necessidade de muitos arquivos de suporte.

O Editor de Imagens

Primeiro de tudo, precisamos criar um arquivo de recurso. A extensão padrão para arquivos de recursos é.RES. Arquivos de recursos podem ser criados com o Image Editor do Delphi.

Você pode nomear o arquivo de recurso como desejar, desde que ele tenha a extensão ".RES" e o nome do arquivo sem a extensão não seja o mesmo que qualquer nome de arquivo de unidade ou projeto. Isso é importante porque, por padrão, cada projeto Delphi compilado em um aplicativo possui um arquivo de recurso com o mesmo nome que o arquivo do projeto, mas com a extensão ".RES". É melhor salvar o arquivo no mesmo diretório que o arquivo do projeto.

Incluindo recursos em aplicativos

Para acessar nosso próprio arquivo de recursos, precisamos dizer ao Delphi para vincular nosso arquivo de recursos à nossa aplicação. Isso é feito adicionando uma diretiva de compilador ao código-fonte. Essa diretiva precisa seguir imediatamente a diretiva de formulário, da seguinte maneira:

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

Não apague acidentalmente a parte {$ R * .DFM}, pois esta é a linha de código que instrui o Delphi a vincular na parte visual do formulário. Quando você escolhe bitmaps para botões de velocidade, componentes de imagem ou componentes de botão, o Delphi inclui o arquivo de bitmap que você escolheu como parte do recurso do formulário. O Delphi isola os elementos da interface do usuário no arquivo .DFM.

Para realmente usar o recurso, você deve fazer algumas chamadas à API do Windows. Bitmaps, cursores e ícones armazenados em arquivos RES podem ser recuperados usando as funções da API LoadBitmap, LoadCursor, e LoadIcon respectivamente.

Imagens em Recursos

O primeiro exemplo mostra como carregar um bitmap armazenado como um recurso e exibi-lo em um TImage componente.

procedimento TfrMain.btnCanvasPic (Remetente: TObject);
var bBitmap: TBitmap;
início
bBitmap: = TBitmap.Create;
experimentar
bBitmap.Handle: = LoadBitmap (hInstance, 'ATHENA');
Image1.Width: = bBitmap.Width;
Image1.Height: = bBitmap.Height;
Image1.Canvas.Draw (0,0, bBitmap);
finalmente
bBitmap.Free;
fim;
fim;

Nota: Se o bitmap a ser carregado não estiver no arquivo de recurso, o programa ainda será executado, mas não exibirá o bitmap. Essa situação pode ser evitada testando para verificar se obBitmap.Handle é zero após uma chamada paraLoadBitmap () e tomando as medidas apropriadas. A parte try / finalmente no código anterior não resolve esse problema, é apenas aqui para garantir que o bBitmap seja destruído e a memória associada seja liberada.

Outra maneira que podemos usar para exibir um bitmap de um recurso é a seguinte:

procedimento TfrMain.btnLoadPicClick (Remetente: TObject);
início
Image1.Picture.Bitmap.
LoadFromResourceName (hInstance, 'EARTH');
fim;

Cursores em Recursos

Screen.Cursors é uma matriz de cursores fornecida pela Delphi. Usando arquivos de recursos, podemos adicionar cursores personalizados à propriedade Cursors. A menos que desejemos substituir qualquer um dos padrões, a melhor estratégia é usar os números do cursor a partir de 1.

procedimento TfrMain.btnUseCursorClick (Remetente: TObject);
const NewCursor = 1;
início
Screen.CursorsNewCursor: =
LoadCursor (hInstance, 'CURHAND');
Image1.Cursor: = NewCursor;
fim;

Ícones nos Recursos

Se olharmos para o DelphiProjeto-Opções-Aplicação configurações, podemos descobrir que o Delphi fornece o ícone padrão para um projeto. Este ícone representa o aplicativo no Windows Explorer e quando o aplicativo é minimizado. Podemos mudar isso facilmente, clicando no botão 'Carregar ícone'.

Se queremos, por exemplo, animar o ícone do programa quando o programa é minimizado, o código a seguir fará o trabalho.

Para a animação, precisamos de umTTimer componente em um formulário. O código carrega dois ícones do arquivo de recursos em uma matriz deTIcon objetos; essa matriz precisa ser declarada na parte pública do formulário principal. Também vamos precisarNrIco, que é uma variável do tipo Inteiro, declarada nopúblico parte. oNrIco é usado para acompanhar o próximo ícone a ser exibido.

público
nrIco: Inteiro;
MinIcon: array0… 1 do TIcon;

procedimento TfrMain.FormCreate (Sender: TObject);
início
MinIcon0: = TIcon.Create;
MinIcon1: = TIcon.Create;
MinIcon0.Handle: = LoadIcon (hInstance, 'ICOOK');
MinIcon1.Handle: = LoadIcon (hInstance, 'ICOFOLD');
NrIco: = 0;
Timer1.Interval: = 200;
fim;

procedimento TfrMain.Timer1Timer (Remetente: TObject);
beginif IsIconic (Application.Handle) então início
NrIco: = (NrIco + 1) mod 2;
Application.Icon: = MinIconNrIco;
fim;
fim;

procedimento TfrMain.FormDestroy (Remetente: TObject);
início
MinIcon0.Free;
MinIcon1.Free;
fim;

No Timer1.OnTimer manipulador de eventos, IsMinimized A função é usada para verificar se precisamos animar nosso ícone principal ou não. Uma maneira melhor de conseguir isso seria capturar os botões de maximizar / minimizar e agir.

Palavras Finais

Podemos colocar qualquer coisa (bem, não tudo) em arquivos de recursos. Este artigo mostrou como usar recursos para usar / exibir bitmap, cursor ou um ícone no seu aplicativo Delphi.

Nota: Quando salvamos um projeto Delphi no disco, o Delphi cria automaticamente um arquivo .RES que tem o mesmo nome que o projeto (se nada mais, o ícone principal do projeto está dentro). Embora possamos alterar esse arquivo de recurso, isso não é aconselhável.


Assista o vídeo: Listview no Delphi - Como instalar o recurso Multi Detail Item (Janeiro 2022).