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