• 0
Alzon

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

Вопросы

4 ответа на этот вопрос

  • 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

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


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

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