Иконка компонента является инкапсулированным объектом, требующим для хранения изображения некоторый участок памяти. Следовательно, при замене иконки, память, связанная с первоначальной иконкой, должна возвратиться в кучу, а для новой иконки требуется новое распределение памяти. По правилам 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;

 

 

 

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить