Einfach die Images via res-Datei als Resource in eine
DLL packen und dann an gewünschter Stelle im Programm in die ImageList laden.
DrawingStyle der ImageList auf dsTransparent setzen. Die Abmessungen der Bilder in der
DLL sollten zu denen der ImageList passen.
Zum Erstellen der res-Datei verwenden wir den XN-Resource-Editor.
Projekt für die
DLL erstellen mit einer
pas-Datei, die alle Konstanten für die Namen der einzelnen Bilder pflegt
Code:
const
RES_TOOLBAR_BTN_PNG = 'RESOURCE_IDENTIFIER'; // name des Bildes/der Resource in der
DLL
...
und in der Projektdatei, diese
pas-Datei und die res-Datei einbindet.
Code:
library imageContainingResource;
uses
SysUtils,
Classes,
ToolbarImages in 'ToolbarImages.pas';
{$R imageContainingResource.res}
{$R ToolbarImages.res} //Datei mit Images
begin
end.
Und dann im eigentlichen Programm darauf zugreifen.
Code:
uses
..., ToolbarImages, ...
const
TOOLBAR_IMG_RESOURCE_DLL = 'imageContainingResource.dll';
...
procedure LoadPNGFromResourceDll(png: TPNGObject; ResDll: string; const ResName: string);
var
h: THandle;
begin
h := 0;
try
h := LoadLibrary(PChar(ResDll));
if (h <> 0) then
png.LoadFromResourceName(h, ResName);
finally
FreeLibrary(h);
end;
end;
...
procedure TFormTest.InitImgList;
var
png: TPngImage;
bmp: TBitmap;
begin
png := TPngImage.Create;
bmp := TBitmap.Create;
try
LoadPNGFromResourceDll(png, TOOLBAR_IMG_RESOURCE_DLL, RES_TOOLBAR_BTN_PNG);
bmp.Assign(png);
// Variante 1
imgList.Add(bmp, nil);
// Variante 2
imgList.AddMasked(bmp, clWhite);
png.Assign(nil);
bmp.Assign(nil);
finally
bmp.Free;
png.Free;
end;
madas