Articles

The simplest way to change bitmap at runtime is to use Assign method. Keep in mind, that when a property is an object, it has memory associated with it. The memory associated with the old value has to be freed, the new memory has to be allocated.

procedure TForm1.Button1Click(Sender: TObject);
var 
  Image: TBitmap;
begin
  Image:=TBitmap.Create;
  if N<ImageList1.Count then ImageList1.GetBitmap(N,Image);
  BitBtn1.Glyph.Assign(Image);
  Inc(N);
  if N>ImageList1.Count then N:=0;
  Image.Free;
end;