2011-12-14 4 views
4

Я пропустил что-то очевидное здесь, я не могу найти способ присвоить ImageIndex подэлемент TListView.Изображения в подменю Listview

У меня есть Listview набор в vsReportMode с 2 колонками, я могу легко назначить ImageIndex первым Items столбцов, что-то вроде:

ListView1.Items[0].ImageIndex := 0; 
ListView1.Items[1].ImageIndex := 1; 
ListView1.Items[2].ImageIndex := 2; 

Я думал, что я мог бы назначить ImageIndex на это подпункты, что-то вроде это (что, очевидно, не работает, потому что имущество, кажется, не существует с подпунктами)

ListView1.Items[0].SubItems[0].ImageIndex := 0; 
ListView1.Items[1].SubItems[0].ImageIndex := 1; 
ListView1.Items[2].SubItems[0].ImageIndex := 2; 

Могу ли я снова путаю себя или же нет такого свойства для подпозиции изображений?

ответ

10

Использование SubItemImages вместо:

var 
    LI: TListItem; 
    i: Integer; 
begin 
    ListView1.ViewStyle := vsReport; 
    for i := 0 to 1 do 
    with ListView1.Columns.Add do 
     Caption := 'Column ' + IntToStr(i); 

    for i := 0 to ImageList1.Count - 1 do 
    begin 
    LI := ListView1.Items.Add; 
    LI.Caption := Format('Item %d', [i]); 
    LI.ImageIndex := i; 
    LI.SubItems.Add(Format('SubItem %d', [i])); 
    LI.SubItemImages[0] := i; // SubItems[ColumnIndex] := ImageIndex; 
    end; 
end; 

Это приводит к

ListView with SubItems and Images

+0

Большое спасибо Ken, я не знаю, как я проглядел SubItemImages, вероятно, потому, что я был уверен, что такое свойство будет иметь был в SubItems [x]. –

+0

Это то, чего я ожидал бы, пока ваш вопрос не заставил меня заглянуть в него. :) –

+0

Что делать, если я не хочу изображения в первом столбце? Если я хочу изображение только для подэлементов, я должен назначить -1 для imageindex первого столбца: li.ImageIndex: = -1; li.SubItemImages [0]: = 1; Изображение тогда не будет отображаться в первом столбце, но текст в первом столбце получит смещение с размером изображения. – grinner

Смежные вопросы