![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
запись в Subitem TListView [D7]
3asys © (2011-11-26 15:21:00)Добрый день!
Есть TListView в котором создано несколько Columns
В цикле ищу нужную строчку (Item) и пытаюсь вставить в определенный столбец этой строчки информацию (текст или картинку)
Делаю это так:
For i:=0 to Form1.Items.Count-1 do
begin
If Form1.Items.Item[i].Caption = Edit1.Text then
begin
// Form1.Items.Item[i].SubItems.Add('');
Form1.Items.Item[i].SubItemImages[2]:=3; // 3 - номер картинки в TImageList
end;
end;
В результате появляется ошибка "List index out of bounds (2)"
Если раскомментировать закоментированную строку, то ошибка не возникает, но и добавления не происходит.
Подскажите, если не трудно, что я делаю не так?
Dennis I. Komarov (2011-11-28 09:57:00) [1]
> Говоря о столбцах я имел в виду, что если открыть ColumnEditor,
> то в редакторе свойств можно увидеть в заголовке обозначение
> вида: ListView1.Columns[1] TListColumn
Не суть. Важно что их там нет...
3asys (2011-11-27 22:35:00) [2]> Dennis I. Komarov ©
Говоря о столбцах я имел в виду, что если открыть ColumnEditor, то в редакторе свойств можно увидеть в заголовке обозначение вида: ListView1.Columns[1] TListColumn
Dennis I. Komarov (2011-11-27 22:27:00) [3]
> Есть TListView с N строками (Item) и M столбцами (Column)
> все ячейки которого заполнены.
Нету, есть экземпляр TListView с N item-ами и у каждого есть свойство SubItems: TStrings
3asys (2011-11-27 12:47:00) [4]> Германн ©
> _Юрий
Спасибо Большое!
_Юрий (2011-11-27 11:41:00) [5]Полный вариант:
while (ListView1.Items[i].Subitems.Count - 1) < k do
ListView1.Items[i].Subitems.Add();
ListView1.Items[i].Subitems[k]:='text';
_Юрий (2011-11-27 11:38:00) [6]
> Буду признателен за конкретный пример вставки например,
> текста в ячейку с адресом TListView.Items[i].Subitems[k].
>
ListView1.Items[i].Subitems[k]:='text';
Германн (2011-11-27 11:35:00) [7]Берем к примеру самую верхнюю "строку" ListView. В ней первый (крайний левый) столбец это ListView.Items[0]. Второй столбец это ListView.Items[0].SubItems[0]. Третий - ListView.Items[0].SubItems[1]. И т.д.
3asys (2011-11-27 11:12:00) [8]Есть TListView с N строками (Item) и M столбцами (Column) все ячейки которого заполнены. Как заменить значение в ячейке где-нибудь во 2 строке и 3 столбце?
Буду признателен за конкретный пример вставки например, текста в ячейку с адресом TListView.Items[i].Subitems[k].
Пупкин (2011-11-27 01:53:00) [9]Это свойство строкового типа. Сабитемс - это tstrings, работайте с ним как с tstrings
3asys (2011-11-27 01:00:00) [10]т.е. как в строку TListView.Items[3].Subitems[7] записать значение )текст или картинку?
3asys (2011-11-27 00:59:00) [11]>Германн ©
А как адресоваться к произвольной колонке произвольной строки TListView.Items[1].Subitems[0]
?
Германн (2011-11-27 00:33:00) [12]
> Согласен, но проблема состоит в том, что я не могу сообразить,
> как обратиться по сути к произвольной ячейке (на пересечении
> столбца Х и строки i ) слева от которой может быть пустая
> ячейка в которую еще ничего не записывалось.
>
Возможно причина в неверном понимании сути "колонок" в TListView в режиме vsReport.
Первая колонка это TListView.Items
Вторая и последующие колонки это TListView.Items[].Subitems.
Таким образом вторая колонка в TListView это TListView.Items[].Subitems[0]
3asys (2011-11-26 23:17:00) [13]Прошу прощения, пропустил ListViev, когда адаптировал код для форума :(
Правильно так:
For i:=0 to Form1.ListViev.Items.Count-1 do
begin
If Form1.ListViev.Items.Item[i].Caption = Edit1.Text then
begin
// Form1.ListViev.Items.Item[i].SubItems.Add('');
Form1.ListViev.Items.Item[i].SubItemImages[2]:=3; // 3 - номер картинки в TImageList
end;
end;
> MBo ©
Согласен, но проблема состоит в том, что я не могу сообразить, как обратиться по сути к произвольной ячейке (на пересечении столбца Х и строки i ) слева от которой может быть пустая ячейка в которую еще ничего не записывалось.
_Юрий (2011-11-26 21:19:00) [14]
> KilkennyCat © (26.11.11 18:24) [4]
Имена чрезвычайно важны.
Берем хорошую программу, заменяем имена на бредовые
Получаем г.
KilkennyCat (2011-11-26 18:24:00) [15]далось вам имя. это не символьный язык искры, где имена и количество переменных предопределены. можно и листвью формой обозвать.
нонамэ (2011-11-26 17:45:00) [16]
For i:=0 to Form1.Items.Count-1 do // что за Form1? откуда у него Items?
begin
If Form1.Items.Item[i].Caption = Edit1.Text then // Какого типа Form1.Item.Items ?
begin
// Form1.Items.Item[i].SubItems.Add('');
Form1.Items.Item[i].SubItemImages[2]:=3; // 3 - номер картинки в TImageList
end;
end;
я тут набредил, найди ашипку мастер
Laguna (2011-11-26 17:43:00) [17]
> For i:=0 to Form1.Items.Count-1 do
Обращение к чему? К форме или к ListView ?
MBo (2011-11-26 17:42:00) [18]>"List index out of bounds (2)"
Значит, такого номера колонки в данной строчке еще нет
SubItems.Add добавляет колонку