unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ImgList, ExtDlgs;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    ImageList1: TImageList;
    Image1: TImage;
    Label1: TLabel;
    Button3: TButton;
    OpenDialog1: TOpenDialog;
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  numer: integer;
implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
  if numer <Imagelist1.Count then
  begin
    Image1.Picture:=nil;
    Imagelist1.GetBitmap(numer,Image1.Picture.Bitmap);
    Inc(numer);
  end
  else
  begin
     ShowMessage('Koniec listy');  numer:=0;
  end;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  OpenDialog1.InitialDir:=GetCurrentDir;
  if OpenDialog1.Execute then  //pobranie obrazu do komp. Image
     Image1.Picture.LoadFromFile(OpenDialog1.FileName)
  else ShowMessage('Nie wybrano pliku');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 

end;

//dodawanie do listy dopasowanego obrazu
procedure TForm1.Button1Click(Sender: TObject);
var bitmapa: TBitmap; //pomocnicza mapa bitowa
    szer,wys: integer;
begin
  szer:=Imagelist1.Width;
  wys:=Imagelist1.Height;
  bitmapa:=TBitmap.Create;
  bitmapa.Width:=szer;
  bitmapa.Height:=wys;
 {1} bitmapa.Canvas.StretchDraw(Rect(0,0,szer,wys),Image1.Picture.Bitmap);
  //dodanie jednej nowej bitmapy do kolekcji TImageList
 {2}Imagelist1.Add(bitmapa,nil);

  //zamiast dopasować do rozmiaru elementu listy można podzielić ją na prostokąty
  //o wymiarach elementów listy (szer,wys), tu 32x32
  //ImageList1.Add(Image1.Picture.Bitmap,nil); - ta instrukcja może być zamiast 1 i 2
  Label1.Caption:='Numer obrazu na liście '+IntToStr(ImageList1.Count);
  bitmapa.Free;

end;

end.
