Delphi Berlin: FMX-TListView, переключение между Windows и Android
Я создал приложение в Delphi 10.1 Berlin, используя Windows в качестве основного вида. Я удалил TListView на форму и настроил его, используя новый режим дизайна Toggle. Я добавил TImageObjectAppearance и несколько элементов TTextObjectAppearance. Я добавил код, чтобы установить изображение для TImageObjectAppearance, и текстовые элементы имеют различные размеры и стиль шрифта. У меня также есть 3 компонента TImage в форме, которые я использую для назначения TImageObjectAppearance.Bitmap на основе значения.
Когда я компилирую его для Win32 и запускаю, все выглядит великолепно. Растровые изображения отображаются на основе значения в каждой строке TListView. Когда я переключаю Стиль на Android и 10-дюймовый планшет View на Android, IDE выдает эту ошибку:
"Невозможно назначить TAppearanceObjectItem для TAppearanceObjectItem."
В представлении по-прежнему написано Android 10"планшет, но фактическое представление в форме все еще в форме Windows. Итак, мой первый вопрос: что это за ошибка, черт возьми? Я думал, что Delphi должен был быть в состоянии скомпилировать все эти разные цели. / устройства, использующие один и тот же код. Это, конечно, не происходит. Но подождите, есть еще...
Поэтому я снова переключился на Стиль: Windows и Вид: Мастер. Я нажал на элемент TImageObjectAppearance в форме и нажал клавишу Delete, и я получил эту ошибку:
"Невозможно удалить постоянную ссылку из конструктора."
Но если вы щелкнете по элементу в окне "Структура" и нажмете "Удалить", он удалится очень хорошо. Ошибка? Я бы так сказал. Во всяком случае, это еще не все. Я удалил элемент TImageObjectAppearance из окна "Структура", а затем переключился обратно на стиль: Android и View: Android 10"Планшет и угадайте, что... Я получаю ту же ошибку. Но в форме нет TImageObjectAppearance! Поэтому я полностью удаляю пользовательские элементы TListView в Windows | Master view и начинаю заново, используя Android 10"планшетный вид. Я добавляю все пользовательские объекты внешнего вида, включая TImageObjectAppearnce. Но когда я компилирую его для 10-дюймового планшета Android и запускаю его на Galaxy Tab S2, 1) Изображения не появляются. Вот код, который я написал для установки изображений. 3 компонента 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 в коде?
Спасибо Барри
1 ответ
Это ошибка
"Не удалось назначить TAppearanceObjectItem для TAppearanceObjectItem" было зарегистрировано как ошибка на нашем портале качества: "
https://community.embarcadero.com/forum/ui/1953-fmx-tlistview-switching-between-windows-android