Delphi Berlin: FMX-TListView, переключение между Windows и Android

Я создал приложение в Delphi 10.1 Berlin, используя Windows в качестве главного представления. Я поместил TListView на форму и настроил его, используя новый режим Toggle Design Mode. Я добавил TImageObjectAppearance и несколько элементов TTextObjectAppearance. Я добавил код для установки изображения для TImageObjectAppearance, а текстовые элементы имеют различные размеры и стиль шрифта. У меня также есть 3 компонента TImage в форме, которые я использую для назначения TImageObjectAppearance.Bitmap на основе значения.

Когда я компилирую его для Win32 и запускаю, все выглядит отлично. Растровые изображения отображаются на основе значения в каждой строке TListView. Когда я переключаю Style на Android и View на планшет Android 10, IDE выдает эту ошибку:

«Невозможно назначить TAppearanceObjectItem для TAppearanceObjectItem».

Представление по-прежнему говорит «Планшет Android 10», но фактическое представление формы по-прежнему является формой Windows. Итак, мой первый вопрос: что, черт возьми, означает эта ошибка? Я думал, что Delphi должен был компилироваться для всех этих разных целей. /devices используют один и тот же код. Этого точно не произойдет. Но подождите, это еще не все...

Поэтому я вернулся к Style: Windows и View: Master. Я щелкнул элемент TImageObjectAppearance в форме и нажал клавишу Delete, и я получил эту ошибку:

«Невозможно удалить постоянную ссылку из конструктора».

Но если вы щелкнете элемент в окне «Структура» и нажмете «Удалить», он будет удален. Ошибка? Я бы сказал так. В любом случае, это еще не все. Я удалил элемент TImageObjectAppearance из окна «Структура», а затем снова переключился на «Стиль: Android» и «Вид: планшет Android 10" и угадайте, что... Я получаю ту же ошибку. Но в форме нет TImageObjectAppearance! Поэтому я полностью удаляю пользовательские элементы TListView в Windows | Master view и начинаю заново, используя Android 10-дюймовый планшет. Я добавляю все настраиваемые объекты внешнего вида, включая TImageObjectAppearnce. Но когда я компилирую его для 10-дюймового планшета Android и запускаю его на своем Galaxy Tab S2, 1) изображения не появляются. Вот код, который я написал для установки изображений. (Там являются тремя компонентами TImage в форме, которую я использую для элементов TImageObjectAppearance.) Этот код отлично работает при компиляции для Win32.

function TdmVisual.AddOrUpdateItem(AItem: TListViewItem; AMGDL: Integer): TListViewItem;
var
  LObject: TListItemImage;

begin
  Result         := AItem;
  LObject        := Result.Objects.FindObjectT<TListItemImage>('imgRating');
  LObject.Bitmap := TBitmap.Create;

  if AMGDL < 70 then
    LObject.Bitmap.Assign(fmMain.iLow.Bitmap)
  else if (AMGDL >= 70) and (AMGDL <= 130) then
    LObject.Bitmap.Assign(fmMain.iGreen.Bitmap)
  else if (AMGDL > 130) and (AMGDL <= 180) then
    LObject.Bitmap.Assign(fmMain.iYellow.Bitmap)
  else
    LObject.Bitmap.Assign(fmMain.iRed.Bitmap);
end;

Мой второй (3-й или 4-й) вопрос: почему приведенный выше код не работает при компиляции для Android и как правильно назначать изображения TImageObjectAppearance в коде?

Спасибо - Барри


person BDirks    schedule 11.05.2016    source источник
comment
Откуда вызывается ваша функция AddOrUpdateItem? Кроме того, кажется неправильным, что вы возвращаете из функции значение, которое было передано в качестве параметра. Почему бы просто не использовать параметр var?   -  person nolaspeaker    schedule 12.05.2016
comment
Давайте просто проигнорируем метод в том виде, в котором он написан, и сосредоточимся на реальном вопросе: как правильно назначать изображения TImageObjectAppearance в коде? А цель проекта — Android. Код внутри процедуры работает, когда целью является Win32, но не Android.   -  person BDirks    schedule 19.05.2016


Ответы (1)


это ошибка

""Невозможно назначить TAppearanceObjectItem для TAppearanceObjectItem" было зарегистрировано как ошибка на нашем портале качества:"

https://community.embarcadero.com/forum/ui/1953-fmx-tlistview-switching-between-windows-android

person Akella225    schedule 09.04.2017