2015-10-09 4 views
0

У меня есть TListView на моей форме. Добавить несколько столбцов в ней в зависимости от входа, как так:Delphi TListView Trouble

MyItem := StringListView.Columns.Add; 
MyItem.Caption := IntToStr(i); 
MyItem.Width := -2; 

Затем я использую onData событие, чтобы заполнить ListView, как это:

procedure TMatrixDictViewerFrame.StringListViewData(Sender: TObject; 
    Item: TListItem); 
var 
    ItemCaption: string; 
    ItemText: string;` 

begin 

    ItemCaption := Format('[%d]', [Item.Index]); 
    ItemText := FItems[Item.Index]; 

    Item.Caption := ItemCaption; 
    Item.SubItems.Add(ItemText); 

end; 

Он отлично работает, так как в первом столбце у меня есть ItemCaptions и во втором столбце я получаю Itemtexts. Я не мог понять, как заполнить ListView в зависимости от данных, которые я получаю. Например: у меня есть матрица A, которая представляет собой матрицу 3x3, и я хочу, чтобы ее элементы отображались в этом ListView, поэтому первая строка показывает первые три элемента строки, вторая строка показывает вторую строку три элемента и так далее. Вопросы: как я могу получить доступ к третьей колонке? Как я могу заполнить представление в соответствии с индексом I (i, j)?

С наилучшими пожеланиями

ответ

0

Index свойство элемента списка сообщает вам строку. Вы должны заполнить всю строку. Пример:

procedure TMatrixDictViewerFrame.StringListViewData(Sender: TObject; Item: TListItem); 
begin 
    // A is a 3x3 matrix, that you obtain by means we don't know 
    Item.Caption := FloatToStr(A[Item.Index, 0]); 
    Item.SubItems.Add(FloatToStr(A[Item.Index, 1])); 
    Item.SubItems.Add(FloatToStr(A[Item.Index, 2])); 
end; 
Смежные вопросы