Почему растровое изображение не отображается в ListView - PullRequest
0 голосов
/ 11 февраля 2020

В Delphi Rio 10.3.3 Я создал новое приложение FMX и поместил три компонента в форму. TButton, TImageControl и TListView, который сделан около 600x400. В Button1Click у меня есть:

    var LItem: TListViewItem;      
    begin
    LItem := ListView1.Items.Add;
    LItem.Height := 250;
    LItem.Bitmap.LoadThumbnailFromFile('My.jpg', 160, 120, False); 
    LItem.Text := 'Text';
    ImageControl1.Bitmap := LItem.Bitmap; 
    ShowMessage(IntToStr(LItem.Bitmap.Width) + ' x ' + 
                IntToStr(LItem.Bitmap.Height));

Что я не понимаю, так это как Bitmap ListViewItem может отображать ожидаемые измерения, которые намного меньше, чем элементы в ListView, и что Bitmap можно скопировать в отдельный ImageControl, где он выглядит, как и ожидалось, но Bitmap ListViewItem не отображается в ListView. Текст ListViewItem действительно появляется в ListView, но, сохраняю ли я это или удаляю, растровое изображение не отображается. Уменьшение размеров миниатюр до половины этих значений не приводит к отображению изображения в растровом изображении.

Я пропустил шаг, который применяется к отображению ListViewItem.Bitmap в ListView?

Например, как это то, что LItem.Text появляется без каких-либо иных значений, кроме присвоения ему значения, в то время как LItem.Bitmap требует какой-то другой обработки?

Я смотрю на то, как работает пример приложения под названием SampleListViewAddThumbnailAndCaption, но он немного запутан и полагается в ListViewItem.BitmapRef, который не является точно задокументированным свойством, поэтому это может быть просто кладжа, потому что он указывает на невидимое изображение. Кроме того, пример приложения использует значение «TI» в качестве имени миниатюры, и я не выяснил, является ли это значимым или пустым.

1 Ответ

0 голосов
/ 11 февраля 2020

Решение состояло в том, чтобы использовать технику с использованием TListItemImage, найденную в примере приложения ListViewAddThumbnailAndCaption, но это было не сразу очевидно, поэтому, хотя я попробовал этот подход до публикации своего вопроса, тот факт, что он не работал, привел меня на мой пост.

Причина, по которой этот подход не сработал, заключается в том, что изображения располагались за пределами измерений ListView. Как только я это исправлю, все остальное становится тонкой настройкой.

...