Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как программно добавить объект в StyleBook?


Kikoma

Вопрос

Продолжая развивать идею, взятой из темы Есть ли в fmx класс TImageList, возник вопрос, а можно в StyleBook програмно добавлять объекты? В моем случае Интересует добавления изображений (максимум 250х250) для последующего отображения в кастомизированом  TListBoxItem.

 

Правильно ли я считаю, что т.к. загрузка изображения довольно трудоемкая операция, то желательно загрузить все изображения в память (Их всего 60 штук ~1,5Мб), для чего и лучше всего использовать StyleBook.

 

Или лучше подгружать картинки из файла в отдельном потоке (или без потока - сейчас попробую, отпишусь)?

 

Попробовал на лету подгружать картинку из файла - тормозов на Galaxy Note 2 не наблюдаются.

Изменено пользователем Kikoma
Ссылка на комментарий

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

  • 0
  • Модераторы

Тоже коснулся этого вопроса.

У меня картинок 164 штуки (может стать больше. размер примерно 128х128) и я вижу четыре варианта хранения:

  1. StyleBook (минусы: неудобно добавлять по одной штуке, каждой картинке нужно присвоить имя)
  2. Хранить в ресурсах (плюсы: можно добавить сразу все картинки. Минусы: нужно задать каждой картинке имя)
  3. Задеплоить (главный минус: прописывать настройки (путь и т.п.) для каждого файла)
  4. Хранить все картинке в zip-архиве (плюсы: один файл, извлечь архив можно в любой момент) Это пока экспериментальный вариант, к нему я склоняюсь больше всего. 
Ссылка на комментарий
  • 0
  • Администраторы

Добавление своего объекта в стиль бук, на примере добавления TImage:

var
  Image: TImage;
begin
  Image := TImage.Create(nil);
  Image.StyleName := 'MyNewImage';
  ImageBook.Style.AddObject(Image);
end;

На счет остальных вопросов нужно смотреть по факту. Если скорость загрузки изображения вас не устраивает (тормозит интерфейс), то делайте асинхронную загрузку изображения в потоках. Иначе не нужно усложнять себе жизнь.

 

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

Ссылка на комментарий
  • 0
  • Администраторы

Андрей, Для добавляемых картинок можно имя генирировать на основе индекса изображения. Как это сделано в VCL. И затем использовать индекс в других местах для выбора изображений.

У меня есть прототип простой реализации TImageList на основе TStyleBook, там сделан специальный дизайнер картинок, который автоматически задает индекс загружаемым изображениям.

Ссылка на комментарий
  • 0

 

Тоже коснулся этого вопроса.

У меня картинок 164 штуки (может стать больше. размер примерно 128х128) и я вижу четыре варианта хранения:

  1. StyleBook (минусы: неудобно добавлять по одной штуке, каждой картинке нужно присвоить имя)
  2. Хранить в ресурсах (плюсы: можно добавить сразу все картинки. Минусы: нужно задать каждой картинке имя)
  3. Задеплоить (главный минус: прописывать настройки (путь и т.п.) для каждого файла)
  4. Хранить все картинке в zip-архиве (плюсы: один файл, извлечь архив можно в любой момент) Это пока экспериментальный вариант, к нему я склоняюсь больше всего. 

 

1.  А если программно в StyleBook из папки, а потом сохранить стиль?

2. А если станет больше картинок в ресурс можно их программно добавить? как?

3. Я для себя имя файла хроню в БД а картинки деплою assets\internal\img\ - (Надеюсь в будущем можно будет потом программно сюда добавить/закачать, а в БД запись добавлю)

   (Кстати задеплоить файлы массово можно и пути им тоже массово назначить, выделяешь и там кнопочки вверху :) )

4. А смысл? Если хранить картинки jpeg то объем архива не изменится. а ресурсы на распаковку архива дополнительно будут тратиться. Если только имеешь ввиду, что задеплоить архив, а уже на месте его распаковать? - смысл? см. п.3

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

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