-
Постов
187 -
Зарегистрирован
-
Посещение
-
Победитель дней
10
Сообщения, опубликованные RoschinSpb
-
-
3 минуты назад, Tumaso сказал:
В чем беда - у TRectangle и TImage нет свойств .Images и .ImageIndex, получать изображения из TImageList приходится вручную. Не проблема, но хотелось бы это делать также просто, как у TButton
Этого делать не стоит. Используйте http://docwiki.embarcadero.com/Libraries/Tokyo/en/FMX.ImgList.TGlyph
TImage уже сам по себе содержит изображение и разные методы для работы с ним, если там будет в дополнение ко всему ссылка на другое изображение, то не понятно что же все таки рисовать если задано и то и другое. Это была бы полная путаница (коей и так достаточно), поэтому для рисования изображений из TImageList сделан отдельный компонент который используется в TButton и т.п.
-
Да, мило. Как уже было сказано можно подгружать фотографии и в TImageList в RunTime, примеров тут есть.
begin Button1.Images := ImageList1; Button1.ImageIndex := ImageList1.AddOrSet('Add', [1, 1.5, 2], ['D:\Мои веселые картинки\Icons\add16.png', 'D:\Мои веселые картинки\Icons\add24.png', 'D:\Мои веселые картинки\Icons\add32.png']); end;
Тогда в отличие от TList будет автоматически разруливаться ситуация с большим количеством одновременно созданных TBitmap.
TBitmap это довольно ресурсоёмкий объект (отсюда и возможные ошибки с дескрипторами) их количество ограничено, особенно на телефонах, TImageList хранит данные хоть и в памяти но просто в виде двоичных данных (в формате PNG), при этом системные объекты создаются и уничтожатся по мере использования, максимальное их количество можно задать свойством CacheSize (должно быть не меньше чем максимальное количество одновременно видимых картинок на экране). -
Потому, что ваш покорный слуга уже больше года в IDERA не работает как и большинство разработчиков.
-
13 часа назад, Tumaso сказал:
По идее TImageList и должен брать на себя всю черновую работу по работе с изображениями, чтобы не приходилось использовать свои TList<TImage>, не правда ли?
Всю работу, так он выполняет, или рисовать тоже должен не хуже фотошопа? Как я понял у вас проблема, IDE долго работает с 50Мб формой? Так это наверно вопрос к IDE, диску, SVN... и да TImageList не предназначен для хранения архива фотографий. Он предназначен для хранения пиктограмм для интерфейсных элементов. Были мысли по расширению возможностей и подзагрузки изображений в RunTime из разных источников (файлы, ресурсы, интернет), но не судьба уже видимо.
Ну, как я понимаю скриншотика мобильного приложения с 50Мб картинок мы не дождемся. Я даже подозреваю почему.
-
5 часов назад, Tumaso сказал:
А если его нельзя использовать для управления 50 Мб картинками, то возникает вопрос...
Любопытно было бы взглянуть на приложение которое работает на телефоне и грузит 50Мб картинок в кнопки во время старта.
-
В 01.11.2017 в 15:50, Вольдемар сказал:
вот -вот
Вольдемар + valdemar
Компонент TImageList - один из самых задокументированных компонентов FM, также имеется демонстрационное приложение входящее в поставку Delphi, кроме того есть две статьи на русском языке про TImageList и видео с примерами работы, не говоря уже об обсуждениях на этом сайте... к чему это я? А... вот вспомнил, это я к тому, что если вы не смогли найти подходящей информации по теме, то это хороший повод задуматься о своём месте в мироздании. Кажется, программирование это не ваше призвание. Возможно в качестве кондуктора, или дворника вы бы принесли гораздо больше пользы человечеству.
Спасибо за понимание.
-
55 минут назад, valdemar сказал:
Да, действительно, только 16х16. Тогда советую использовать ImageControl1 вместо кнопки, чтобы была полноразмерная картинка.
-
На кнопках размер картинки определяется только стилем кнопки, из TImageList берется картинка наиболее подходящего размера (если их несколько) и растягивается, или сжимается до нужного размера с учетом масштаба дисплея. ActionList вообще ни как на картинку не влияет, там хранится только номер.
Кстати что за вопрос-то? -
-
Форма должна иметь значение свойства FormStyle равное fsPopup. См. также Всплывающие формы в XE5
-
Я приду. Фэйлор, сказал только если жена отпустит.
-
Пора это заведение переименовать в Генерал Фэйлор.
«General Failure reading drive a:» -
Делать привязку к KeyDown я бы вообще не рекомендовал. Была б моя воля я бы такие события, которые работают с физическими устройствами (OnMouseXXX, OnKeyYYY) вообще выпилил, ну нету на телефоне ни физической мыши, ни клавиатуры. Сенсорный экран есть и голосовой ввод есть, но это несколько иные вещи. Попытка эмулировать виндовое поведение, ради совместимости которой всё равно нет, приводит к таким вот проблемам.
Если надо что-то сделать, с введенным текстом, то реагировать можно в OnChange, OnExit или вообще по нажатию на кнопку "Ok" делать подмену десятичного разделителя.
-
-
Цитата
есть колонка "status" со значениями от 0 до 10 ... в StringGgrid вместо значений выводить картинку из imageList равную значению (значение 3 = номер imageList = 3 и тд) ... я имел ввиду динамически загрузить.
В хорошо поставленном вопросе содержится половина ответа, но это не про Вас...
И так чего не понятно из рекомендованного примера? Назначаете свойство Images у вашей сетки (StringGrid). Делаете щелчок правой кнопкой мыши где-то на заголовке GtringGrid, добавляете колонку TGlyphColumn (используя пункт открывшегося контекстного меню). Эта колонка теперь будет отображать картинку с соответствующим номером, вместо текста 0, 1,2,3 и т.п. В том же примере есть варианты работы с наборами данных.
-
Демонстрационный проект GridDemo пробовали смотреть?
-
Хорошо, если упростить по-максимуму сделать без Resize, например?
Сделать не TImage, а TBitmap... -
Какая версия Delphi?
-
Ну вот, а все Крюкова ругали...
-
Про
bmp.Clear(TAlphaColorRec.Null)
надо не забывать. В Windows новая картинка создается уже заполненной нулями, хотя гарантий нет, а вот на других платформах — память содержит мусор, хотя гарантий тоже нет, поэтому вполне может работать на одном дэвайсе нормально, а на другом выдавать мусор.
-
Может будет полезно: Всплывающие формы в XE5
-
4 часа назад, kami сказал:
Не знаю... ни в D7, ни в D2010 не сталкивался с изменением dfm-ок в плане картинок. В том числе - в ImageList.
А что я постоянно сталкиваюсь в Delphi6... если любые изменения были, то TImageList тоже меняется. Может, конечно, тоже от картинки зависит.
-
15 часов назад, kami сказал:
Если я правильно понял, то таких багов уже зарепортена толпа. Начиная от того, что каждое сохранение формы со StyleManager (даже если на форме вообще ничего не трогали) приводит к практически полному изменению картинок в стиле. В любой системе контроля версий это видно великолепно. Задалбывает каждый раз выборочно ревертить изменения.
Картинки меняются даже в Delphi 6 (не XE6), но вот заметных артефактов не наблюдается.
-
Да, проблема в стрим. И скорее всех на уровне ОС Windows. Сама Fire Monkey не занимается кодированием-декодированием png-файлов.
procedure TForm2.UpdateBitmap(var Bitmap: TBitmap); var Stream: TMemoryStream; begin if Bitmap <> nil then begin Stream := TMemoryStream.Create; try Bitmap.SaveToStream(Stream); FreeAndNil(Bitmap); Stream.Position := 0; Bitmap := TBitmap.Create; Bitmap.LoadFromStream(Stream); finally FreeAndNil(Stream); end; end; end;
При однократном перекодировании артефакты практически не заметны так что на других платформах это не столь критично.
Заметно становится только при многократном перекодировании, что и происходит в IDE. Есть кто с честной версией? Может продублируете багрепорт со ссылкой на https://quality.embarcadero.com/browse/RSP-18210.
Концепция интерфейса приложения для Андроида
в Приложение и формы
Опубликовано
Если всё кидать на Tabы то очень скоро форма превратится в венегрет, где ничего невозможно найти. Гораздо удобнее работать с формой/фреймом на котором есть минимально необходимый набор контролов. А фреймы можно уже кидать на табы, панели или еще куда - дело вкуса.