Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как изменить содержимое 2-й строки ListView без Clear?


Семён ©   (2009-01-06 16:55:00) 

Заполняю так:
ListView1.Items[g].SubItems.Add('');
а как изменить? не очищая предварительно весь ListView ?


palva   (2009-01-07 11:12:00) [1]


> Я в основном использую "Программирование в Delphi7" Архангельского.

Хорошая книга. Заставляет много думать.


Германн   (2009-01-07 01:55:00) [2]


> Семён   (06.01.09 20:52) [8]
>
> > Юрий Зотов ©   (06.01.09 20:44) [7]
> Я в основном использую "Программирование в Delphi7" Архангельского.
>
>И в книге ни слова по этому поводу!
>

Вот уж это и неудивительно!


Юрий Зотов   (2009-01-06 21:00:00) [3]

> Семён   (06.01.09 20:52) [8]

> Создал в ListView две колонки

Вся строка - это ListItem.
Первая колонка - это Caption самого ListItem'а.
Вторая колонка - первый SubItem этого ListItem'а. Его индекс - ноль .

Других SubItem'ов Вы не создавали, поэтому как только пытаемся обратиться к несуществующему SubItem'у (с ненулевым индексом) - так тут же и получаем выход индекса за границу списка (list index out of bounds).


Семён   (2009-01-06 20:52:00) [4]

> Юрий Зотов ©   (06.01.09 20:44) [7]
Я в основном использую "Программирование в Delphi7" Архангельского.
Создал в ListView две колонки, заполнил там-же в конструкторе первую. Дальше я рассуждал - вторая колонка создана => значит можно заполнять! И в книге ни слова по этому поводу!

Но, спасибо - за подсказку!


Юрий Зотов   (2009-01-06 20:44:00) [5]

> Семён   (06.01.09 19:20) [3]
> Семён   (06.01.09 20:04) [4]

Конечно, без предварительного Add будет Out of bounds. Это же азбука TStrings.

Книжку бы Вам почитать, хотя бы по основным классам VCL. Или хотя бы справку.


Сергей М.   (2009-01-06 20:27:00) [6]

g=2


Сергей М.   (2009-01-06 20:26:00) [7]


> по любому "out of bounds"


Да ничего подобного.

ListView1.Items[2].SubItems.Add(..); //создали 1-й сабитем (его индекс 0)
ListView1.Items[2].SubItems.Add(..); //создали 2-й сабитем (его индекс 1)
ListView1.Items[2].SubItems.Add(..); //создали 3-й сабитем (его индекс 2)
ListView1.Items[g].SubItems[ 2] := 'Привет, Семен! Это вид в профиль !';
ListView1.Items[g].SubItems.Strings[ 2] := 'Те же фаберже, Семен, но вид в анфас !';

Удивись)


Семён   (2009-01-06 20:04:00) [8]

Вот так сработало:
ListView1.Items[2].SubItems.Strings[0] := 'ххх';
но только после SubItems.Add!

а второй вариант:
ListView1.Items[g].SubItems[2] := 'Привет, Семен!';
по любому "out of bounds"!


Семён   (2009-01-06 19:20:00) [9]

> ListView1.Items[g].SubItems.Strings[0] := 'Привет, Семен!';
> ListView1.Items[g].SubItems[2] := 'Привет, Семен!';

в обоих случаях "out of bounds"! Попробовал и немного подкорректировать эти варианты, тоже ничего хорошего не вышло!


Юрий Зотов   (2009-01-06 17:12:00) [10]

SubItems - это обычный TStrings:

ListView1.Items[g].SubItems.Strings[0] := 'Привет, Семен!';
ListView1.Items[g].SubItems[2] := 'Привет, Семен!';


Семён   (2009-01-06 16:56:00) [11]

Извиняюсь, 2-го столбца!


Наверх

Титульная страница Поиск, карта сайта Написать письмо