Академический Документы
Профессиональный Документы
Культура Документы
Apesar de já se
ter escrito diversos artigos sobre este tópico, sua questão tinhas algumas novidades.
Primeiramente, ele desejava que o fundo se alternasse periodicamente entre diferentes
imagens. Além disso, elas deveriam estar todas dentro do executável ao invés de serem
carregadas do disco.
Finalmente, para tratar do assunto "não leia as imagens do disco", recorremos aos
resources. Um arquivo de resource é apenas um caminho para empacotar muito bem
qualquer tipo de dados que será anexado ao executável durante o processo de
Linkedição. Para o caso deste exemplo, Eu utilizei 5 bitmaps e os nomeei Image1.bmp
até Image5.bmp. Então criei um script de resource semelhante ao que se segue:
A primeira parte de cada linha é o identificador que você utilizará no código para
capturar uma imagem em particular. A segunda parte é o tipo de resource (neste caso,
bitmap). E a última parte é o nome do arquivo que deve ser utilizado para a imagem.
Isto feito, eu apenas utilizei o programa BRCC32 (na pasta BIN do Delphi) da Borland
para compilar o script de resource, gerando um arquivo RES. Então, inclui uma
referência como a seguinte no código do projeto:
{$R MYBMPS.RES}
Quando o executável está sendo linkeditado (um passo antes da compilação), o resource
será automaticamente anexado ao executável. Para carregar as imagens do resource no
array de bitmaps no programa, fiz simplesmente:
for a := 1 to NumBmps do
begin
Bmps[a] := TBitmap.Create;
Bmps[a].LoadFromResourceName(hInstance,'BITMAP'+IntToStr(a));
end;
unit Unit1a;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
const
NumBmps = 5;
type
TForm1 = class(TForm)
Timer1: TTimer;
Edit1: TEdit;
CheckBox1: TCheckBox;
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
Bmps : Array[1..NumBmps] of TBitmap;
SelectedBmp : Integer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{$R MYBMPS.RES}
end.