Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1318345951
Человек
2011-10-11 19:12
2012.03.04
Шифрование -- чем?


3-1272459836
mefodiy
2010-04-28 17:03
2012.03.04
Несоответствие между ADO и AnyDAC


15-1320993358
Andy BitOff
2011-11-11 10:35
2012.03.04
Ну что, ждем? =)


15-1321269775
картман
2011-11-14 15:22
2012.03.04
файлы


2-1322479692
Gu
2011-11-28 15:28
2012.03.04
вырезать строку по длинне с вырезом в центре





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский