Я создал приложение в 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 в коде?
Спасибо - Барри