![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как изменить содержимое 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-го столбца!