Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.03.04;
Скачать: CL | DM;

Вниз

запись в 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.013 c
15-1321012496
alexdn
2011-11-11 15:54
2012.03.04
Radikal.ru


1-1287596219
MAcKZloy
2010-10-20 21:36
2012.03.04
XmlDocument и теги


15-1321293166
oxffff
2011-11-14 21:52
2012.03.04
Отправка посылки из Москвы


2-1322388950
я
2011-11-27 14:15
2012.03.04
длина bmp в пикселях


15-1321291140
Омлет
2011-11-14 21:19
2012.03.04
«Начинающим» отпала