FIL Опубликовано 15 августа, 2015 Поделиться Опубликовано 15 августа, 2015 Всем привет! Копался в примерах к версии ХЕ8 и в одном из них (Object Pascal\FireMonkey Desktop\CustomListBox) наткнулся на такую строку кода: Item := TListBoxItem.Create(nil); ... Item.StylesData['icon'] := OpenDialog1.Files[i]; // <--- которая, как я понимаю, должна грузить картинку из файла (???), т.к. icon - это TImage. По факту, ни ошибок нет, ни картинки. Объясните, что это за конструкция такая и почему она не работает? Цитата Ссылка на комментарий
0 FIL Опубликовано 15 августа, 2015 Автор Поделиться Опубликовано 15 августа, 2015 (изменено) И еще... В том же самом примере при другом способе добавления рисунка: Item.ItemData.Bitmap := Image1.Bitmap этот самый рисунок появляется на Item'е только если его (Item) с помощью прокрутки убрать за границы ЛистБокса, а потом снова показать. Изменено 15 августа, 2015 пользователем FIL Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 16 августа, 2015 Модераторы Поделиться Опубликовано 16 августа, 2015 ответ тут Цитата Ссылка на комментарий
0 FIL Опубликовано 16 августа, 2015 Автор Поделиться Опубликовано 16 августа, 2015 (изменено) При загрузке изображения через: Item.ItemData.Bitmap := Image1.Bitmap; заставить его перерисоваться можно так: Item.NeedStyleLookup; (на эмуляторе Андроида работает) Если сделать так: Item.StylesData['icon'] := OpenDialog1.Files[i]; Item.StylesData['icon.visible'] := True; то изображение тоже появляется, но после прокрутки исчезает навсегда. Если в этом же коде переименовать icon, например, в icon1, то изображение грузится, но после прокрутки иногда исчезает, а иногда - нет, но всегда появляется у некоторых других итемов, где его быть не должно: Изменено 16 августа, 2015 пользователем FIL Цитата Ссылка на комментарий
0 AngryOwl Опубликовано 16 августа, 2015 Поделиться Опубликовано 16 августа, 2015 (изменено) Вот уже в который раз обсуждается подобный вопрос... Я бы даже сказал - тот же самый! Почти каждый раз пишу одно и то же, но все упорно наступают на те же самые грабли. При этом пытаясь меня убедить в том, что делать то я что я пишу - необязательно, и при этом жалуются что у них с их вариантами - не получается достичь нужного результата. Отройте ссылку и в фрагменте кода найдите КЛЮЧЕВУЮ! строку: newItem.OnApplyStyleLookup := MissMessageApplyStyle; Смысл - переопределите событие OnApplyStyleLookup для создаваемых итемов, а внутри MissMessageApplyStyle (назовите как угодно..) - перерисовывайте содержимое. Т.е. - буквально, обновляйте содержимое "ручками". Тогда у Вас будет все работать как надо, картинки пропадать не будут, и т.д. и т.п. З.Ы. И да, еще. Если ваш итем ну очень сложный какой-то, например, с необходимостью отрисовки срок разными цветами или что-то еще сложнее - можете переопределить OnRepaint... З.З.Ы. В той же теме можете увидеть, насколько сложные итемы я создавал и что у них внутри есть, и все работает как надо... Изменено 16 августа, 2015 пользователем AlexG FIL и Kitty 2 Цитата Ссылка на комментарий
0 FIL Опубликовано 16 августа, 2015 Автор Поделиться Опубликовано 16 августа, 2015 AlexG, да как правильно делать я уже примерно представляю: icon по умолчанию грузится из Item.ItemData.Bitmap или ImageList. Если добавляется свой эл-т в стиль, то он "настраивается" в обработчике OnApplyStyleLookup. Но в данной теме речь идет не о моем говнокоде, а об официальном примере от разработчиков ХЕ8. Вообще-то, некоторые при изучении ФМ пытаются ориентироваться, в том числе, и на данные примеры, т.к. качественной информации по предмету совсем не дофига, а видят в итоге наскоро слепленную фигню, которая еще больше запутывает. AlexG, по ссылке код из MissMessageApplyStyle полностью повторяется в AddMissMessageItem. По идее, его же можно заменить на вызов MissMessageApplyStyle или NeedStyleLookup, или там есть какой-то другой тайный смысл? Цитата Ссылка на комментарий
0 AngryOwl Опубликовано 16 августа, 2015 Поделиться Опубликовано 16 августа, 2015 "можно заменить на вызов MissMessageApplyStyle или NeedStyleLookup" Можно, конечно. При написании было не до оптимизации Цитата Ссылка на комментарий
Вопрос
FIL
Всем привет!
Копался в примерах к версии ХЕ8 и в одном из них (Object Pascal\FireMonkey Desktop\CustomListBox) наткнулся на такую строку кода:
которая, как я понимаю, должна грузить картинку из файла (???), т.к. icon - это TImage.
По факту, ни ошибок нет, ни картинки.
Объясните, что это за конструкция такая и почему она не работает?
Ссылка на комментарий
6 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.