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

RoschinSpb

Пользователи
  • Постов

    187
  • Зарегистрирован

  • Посещение

  • Победитель дней

    10

Ответы сообщества

  1. Пост RoschinSpb - сообщение в Ручная анимация прокрутки списка был отмечен как ответ   
    Можно попробовать TListBox.AniCalculations.MouseWheel
    См. также Платформонезависимый скроллинг в Fire Monkey

     
  2. Пост RoschinSpb - сообщение в Форма не на весь экран был отмечен как ответ   
    Форма должна иметь значение свойства FormStyle равное fsPopup. См. также Всплывающие формы в XE5
  3. Пост RoschinSpb - сообщение в Удалить картинку из TimageList был отмечен как ответ   
    Ломать не строить, здесь нет ни каких сложностей.
    TImageList содержит две коллекции Source и Destination. Удаляете из них Item`ы как из обычных коллекций TCollection с помощью методов Delete и Clear. В Source находятся сами изображения, в Destination ссылки на Source.
    Если удалите только из Source, то в нумерация изображений не поменяется и останутся пустые элементы, хотя расход памяти уменьшится. Если удалите только из Destination, то нумерация картинок съедет, и расход памяти почти не изменится. Каждый элемент Destination может содержать несколько ссылок на Source это коллекция Layers, из которой точно также можно удалять элементы.
  4. Пост RoschinSpb - сообщение в Уничтожение фрейма при нажатии на кнопку был отмечен как ответ   
    В качестве послесловия.
    Деструктор объекта не может быть вызван внутри метода этого объекта (самоубийства запрещены). Всегда можно поставить точку останова на вызов метода Free/FreeAndNil. И внимательно посмотреть стек вызова, если где-то в стеке вызова присутствует разрушаемый объект, то это не правильно. Сложности добавляет то, что это не обязательно приводит возникновению AV, вполне может быть, что у вас всё будет работать без ошибок, а на другом компьютере, или на другой платформе с ошибками.
    Release на самом деле приводит к отложенному удалению не внутри вызывающего метода, т.е. объект просто помечается как готовый к удалению.
  5. Пост RoschinSpb - сообщение в Canvas и FillText в StringGrid'е - разворот времени был отмечен как ответ   
    Я думаю самый оптимальный вариант это просто использовать событие OnDrawColumnBackground при этом надо включить AlternatingRowBackground в Options. И не забудьте задать стиль кисти Canvas.Fill.Kind := TBrushKind.Solid;
  6. Пост RoschinSpb - сообщение в Смена цвета label в runtime был отмечен как ответ   
    Ключевым здесь является TStyledSetting.FontColor
    NadG.StyledSettings := NadG.StyledSettings - [TStyledSetting.FontColor];
    Работает и с BeginUpdate и без оного и c любым положением "Paren :="
    См. также Почему не изменяется Font.Style и Font.Size.
  7. Пост RoschinSpb - сообщение в [XE8] Новая иерархия классов был отмечен как ответ   
    Возможно, что вопрос уже потерял актуальность, но тут есть дерево наследования всех классов пакета FMX. Инфа немного впереди паровоза, т. е. актуальна для следующей версией после RAD Studio 10.
  8. Пост RoschinSpb - сообщение в FMX.ImageList динамическое добавление элементов был отмечен как ответ   
    Соседняя тема имеет не совсем подходящее название "Загрузка иконок в TimageList из базы данных"
    Похоже, что там обсуждается именно ваш вопрос:
    http://fire-monkey.ru/topic/1596-zagruzka-ikonok-v-timagelist-iz-bazy-dannykh/?p=8599
  9. Пост RoschinSpb - сообщение в Загрузка иконок в TimageList из файла был отмечен как ответ   
    Не похоже нет. См. демонстрационное видео https://www.youtube.com/watch?v=3voFs62PYl0&feature=youtu.be&t=260
    Если у вас сохранилось имя файла, то можно заново загрузить все изображения с новыми параметрами и в числе прочего с новым цветом прозрачности.
    Хотя параметры изображения действительно применяются только в момент загрузки. Потому, что это все-таки не фотошоп и исходник картинки не хранится в FMX. То, что попадает в FMX это часто результат обработки с потерей данных. Т.е. если исходное изображение 128x128 сначала сделать 16х16, а потом 32х32, то качество количество деталей будет как у 16х16. Поэтому цвет и размеры применяются только один раз в момент загрузки, что позволяет минимизировать потери.
    В FMX-файле данные хранятся только в png-формате (во всяком случае на текущий момент).
    Редактор в IDE использует функцию TCustomBitmapItem.CreateBitmap.
    MultiresBitmap имеет свойства Width, Height, TransparentColor, SizeKind. Каждый элемент этой коллекции MultiresBitmap имеет свойство FileName, Scale.
     
    Функция CreateBitmap на основе этих данных создает TBitmap. Если она вернула не nil, то вы можете присвоить эту картинку элементу коллекции TMultiresBitmap.
     
    Кактотак мы перегружаем все изображения.
            MultiresBitmap.BeginUpdate;         try           for I := 0 to TMultiresBitmap.Count - 1 do           begin             FmxBitmapSource := MultiresBitmap[I].CreateBitmap;             try               if Assigned(FmxBitmapSource) then               begin                 MultiresBitmap[I].Bitmap.Assign(FmxBitmapSource);               end               else               begin                 MultiresBitmap[I].Bitmap.SetSize(0, 0);                 MultiresBitmap[I].FileName := '';               end;             finally               FreeAndNil(FmxBitmapSource);             end;           end;         finally           MultiresBitmap.EndUpdate; Если у вас TransparentColor не clNone, то просто попиксельно заменяется указанный цвет на полностью прозрачный. Если TransparentColor = clDefault, то используется цвет нижней левой точки. Исходники CreateBitmap доступны, так что можете взять за основу, и сделать что-то подобное, если данные грузятся не из файла.
    А что касается добавления картинок в TImageList, то можно посмотреть статью http://community.embarcadero.com/blogs/entry/timagelistxe8ru и демку, которая поставляется в составе Delphi, или взять её отсюда http://sourceforge.net/p/radstudiodemos/code/HEAD/tree/trunk/Object%20Pascal/FireMonkey%20Desktop/ImageList
  10. Пост RoschinSpb - сообщение в Png в TImage из TImageList был отмечен как ответ   
    Что такое marker? Если TMapMarkerDescriptor, то это Record. Icon это просто поле которое ссылко на объект. Если объект будет уничтожен, то мы получим Access Violation.
    TImageList в Fire Monkey не имеет метода GetBitmap. Зато есть метод Bitmap. О котором можно прочитать в документации: FMX.ImgList.TCustomImageList.Bitmap в частности
     
    Кроме того в предложенной статье написано:
    Т.е. в отличии от VCL-ного TImageList, в FMX, он не имеет постоянного размера. В зависимости от того, какой размер нам нужен будет сгенерирована картинка TBitmap растянутая/сжатая до нужных размеров с сохранением пропорций. Чтобы это не занимало слишком много времени последние сгенерироваyные картинки хранятся во внутреннем буфере из которого они могут "выталкиваться".
    В Image (как и для большинства классов) при присваивании экземпляра какого-нибудь объекта в сеттере вызывается метод Assign, т.е. копируется не ссылка на объект, а копируются данные. В этом случае нас не интересует дальнейшая судьба исходного объекта.
  11. Пост RoschinSpb - сообщение в [TScrollBox] Можно ли изменить зону оттягивания у ScrollBox? был отмечен как ответ   
    Такой возможности нет
  12. Пост RoschinSpb - сообщение в Как работает TImageList c TButton ? был отмечен как ответ   
    Поменять размер картинки можно путем изменения стиля.

    Вот результат:

    Можно пойти и традиционным путем и просто вставить в кнопку контрол TGlyph

     
     

    Если в каких-то стилях не отображается, или отображается не так красиво, как хотелось бы, то надо сообщить в QC. Проблема скорее всего в стиле. Возможно в него просто забыли добавить TGlyph.
    P.S. по предыдущему вопросу, что умолчательный размер картинки 16 рассчитан на кнопки умолчательного размера. Вот как это выглядит в VCL
  13. Пост RoschinSpb - сообщение в Как программно реализовать подгонку картинки в TImage в RunTime, так же как это делает MultiResBitmap Editor? был отмечен как ответ   
    Ну... очень странно. Вот видео http://youtu.be/x9AiC9pmWfU
    А в прикрепленном файле проект
    Project1.zip
×
×
  • Создать...