Иконка компонента является инкапсулированным объектом, требующим для хранения изображения некоторый участок памяти. Следовательно, при замене иконки, память, связанная с первоначальной иконкой, должна возвратиться в кучу, а для новой иконки требуется новое распределение памяти. По правилам Delphi, этим должен заниматься метод "Assign". Ниже приведен код всей процедуры замены иконки.
Code: |
implementation
{$R *.DFM}
var n: integer; // При инициализации программы данное значение будет равным нулю
procedure TForm1.Button1Click(Sender: TObject); var Image: TBitmap; begin // Изменение иконки в BitBtn1
Image := TBitmap.Create; if n < ImageList1.Count then ImageList1.GetBitmap(n, Image); {end if}
BitBtn1.Glyph.Assign(Image) // Примечание: Для изменения свойств объекта используется метод Assign
inc(n, 2); // В данный момент кнопка содержит две иконки! if n > ImageList1.Count then n := 0; {end if} Image.Free; end;
procedure TForm1.Button2Click(Sender: TObject); begin // добавляем новую иконку кнопки в список ImageList1 if OpenDialog1.Execute then ImageList1.FileLoad(rtBitMap, OpenDialog1.FileName, clBtnFace); label1.Caption := 'Количество иконок = ' + IntToStr(ImageList1.Count); end;
|
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!