Перейти к содержанию
  • Регистрация
  • 0
Alzon

FMX.ImageList динамическое добавление элементов

Вопрос

Рекомендуемые сообщения

  • 0

В демонстрационных проектах есть пример работы с ImageList, где так-же в Run time добавляются новые изображения..

Найти его можно тут С:\Users\Public\Documents\Embarcadero\Studio\17.0\Samples\Object Pascal\Multi-Device Samples\User Interface\ImageList

(есть вероятность, что у вас необходимо немного изменить путь, в зависимости от расположения папки "Users" или "Пользователи", а так-же заменить 17.0 на вашу версию).

Надеюсь это вам поможет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Соседняя тема имеет не совсем подходящее название "Загрузка иконок в TimageList из базы данных"
Похоже, что там обсуждается именно ваш вопрос:

http://fire-monkey.ru/topic/1596-zagruzka-ikonok-v-timagelist-iz-bazy-dannykh/?p=8599

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
type
  TImageListHelper = class helper for TImageList
    function Add(aBitmap: TBitmap): integer;
  end;

function TImageListHelper.Add(aBitmap: TBitmap): integer;
const
  SCALE = 1;
var
  vSource: TCustomSourceItem;
  vBitmapItem: TCustomBitmapItem;
  vDest: TCustomDestinationItem;
  vLayer: TLayer;
begin
  Result := -1;
  if (aBitmap.Width = 0) or (aBitmap.Height = 0) then exit;

  // add source bitmap
  vSource := Source.Add;
  vSource.MultiResBitmap.TransparentColor := TColorRec.Fuchsia;
  vSource.MultiResBitmap.SizeKind := TSizeKind.Source;
  vSource.MultiResBitmap.Width := Round(aBitmap.Width / SCALE);
  vSource.MultiResBitmap.Height := Round(aBitmap.Height / SCALE);
  vBitmapItem := vSource.MultiResBitmap.ItemByScale(SCALE, True, True);
  if vBitmapItem = nil then
  begin
    vBitmapItem := vSource.MultiResBitmap.Add;
    vBitmapItem.Scale := Scale;
  end;
  vBitmapItem.Bitmap.Assign(aBitmap);

  vDest := Destination.Add;
  vLayer := vDest.Layers.Add;
  vLayer.SourceRect.Rect := TRectF.Create(TPoint.Zero, vSource.MultiResBitmap.Width,
      vSource.MultiResBitmap.Height);
  vLayer.Name := vSource.Name;
  Result := vDest.Index;
end;

 

Хелпер  позволяет добавлять свои методы, не наследуясь от класса.

После этого можно обращаться к любому ImageList 

ImageList1.Add(MyBitmap);

 

Изменено пользователем ENRGY

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...