Огромное спасибо Равиль! Как хорошо что вы помогаете.
Итак для тех кто не знает, в TListView есть режим DynamicAppearance , который позволяет добавлять предустановленные элементы - картинки, текст, GlyphButon. В хелпе написано что их может быть любое количество.
Итак добавляем TListView, в панели Structure выбираем TListView > ItemAppearance > Item.
В инспекторе объектов выбрать свойство Appearance и комбобоксе Dynamic Appearance. Рядом в инспекторе появится свойство Objects - нажать на него и там уже добавляем нужные поля. Там же можно переименовать поле, в AppearanceObjectName чтобы позже использовать в RunTime. У меня периодически на этих этапах вылетает Catastrophic Failure и среду приходится терминировать с диспетчера (Berlin Update 2).
Дальше, жмем правой кнопкой мыши по ListView и выбираем Toggle Design Mode, где можно увидеть эти добавленные Custom поля и расставить их мышкой и указать выравнивание.
Это имя затем можно использовать в Runtime, для картинки это индекс в ImageList, который нужно указать в ListView таким образом (за это еще раз спасибо Равилю! :), почему это сделали так неочевидно и почему это не указано в мануале, остается загадкой..
Для TImageObjectAppearance с именем Star -
ListView1.Items.Add.Data['Star'] := Integer(1);
Например заполняем список с картинками с индексами 0 и 1:
procedure TForm5.FormShow(Sender: TObject);
var
I: Integer;
begin
for I := 0 to 9 do
begin
with ListView1.Items.Add do
begin
Text := 'Item ' + I.ToString;
Data['Star'] := Integer(I mod 2 = 0);
end;
end;
end;
Переключаем с картинки с индексом 1 на 0 и наоборот.
procedure TForm5.ListView1ItemClick(const Sender: TObject; const AItem: TListViewItem);
begin
AItem.Data['Star'] := AItem.Data['Star'].AsInteger xor 1;
end
;