Я [ZuBy] уважаю! Но не слушайте его, в данном случае! ))))
Я с ним не согласен. Точнее - не совсем.
У TListBox есть ряд свои преимуществ! Причем, зачастую, довольно существенных. Которые никакие TListView не перекрывают. По крайне мере пока.
Во-первых - если речь идет о Винде, то это возможность плавного скроллинга. Чего нет у TListView. Не знаю кому как из разрабов, а рядового пользователя это часто бесит - прокрутка "рывками".
Во-вторых - TListBox и его TListBoxItem'ы все же намного проще "рисовать". В смысле - создание своего шаблона пока еще намного проще чем у TListView. Вы можете для TListBox очень просто создавать свои элементы списка.
Несмотря на то, что TListBox существенно "тормознее" TListView, часто его скорости вполне достаточно.
Все, разумеется, зависит от Ваших конечных целей.
А что касается картинок в Итемах TListBox, то нужно просто переопределить ApplyStyle.
Создайте свою процедуру, например ItemApplyStyle;
Присвойте, при создании Итема, свой обработчик. Например
newItem.OnApplyStyleLookup := ItemApplyStyle;
А в ItemApplyStyle сделайте обновление картинки. Типа так:
procedure TContactActions.ItemApplyStyle(Sender: TObject);
var
StyleObject: TFmxObject;
lbx : TListBox;
LI : TListBoxItem;
begin
LI := Sender as TListBoxItem;
LI.BeginUpdate;
try
StyleObject := LI.FindStyleResource('picture') as TCircle;
if Assigned(StyleObject) then
begin
TCircle(StyleObject).Fill.Bitmap.Bitmap.Canvas.BeginScene();
try
TCircle(StyleObject).Fill.Bitmap.Bitmap := ____тут_ваш_битмап__;
finally
TCircle(StyleObject).Fill.Bitmap.Bitmap.Canvas.EndScene;
end;
end;
finally
LI.EndUpdate;
end;
end;
Разумеется, все проверки и прочее - это уж Вы сами. И в моем примере это TCircle, а у Вас что - сами решите.
Ну и можно для краткости (если там просто TImage) не писать все через StyleObject, а покороче, через StylesData['_имя_.bitmap'] и т.д.
Ну и что на Delphi - не обессудьте! ) Смысл тут простой.
Думаю, что в целом идея ясна.