Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2011, 18:30   #1
CAMOBAP
Форумчанин
 
Регистрация: 07.12.2010
Сообщений: 115
По умолчанию ListBox (Delphi)

Как из StringList вывести сроки в ListBox начиная с i:=4 и до конца StringList. Только строки нужно выводить не все подряд , а только i:=i+8
CAMOBAP вне форума Ответить с цитированием
Старый 08.03.2011, 18:40   #2
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

используйте цикл while, c шагом i:=i+8
условие выхода из цикла: i<TStringList.Count-1
добавить строку в TListBox - TListBox.Append();
доступ к элементу TStringList: TStringList[i]

Код:
...
var i:integer
    list:TStringList;
...
i:=4;
while (i<list.count-1) do
Begin
  ListBox.Append(list[i]);
  inc(i,8);
end;
...
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 08.03.2011, 18:57   #3
CAMOBAP
Форумчанин
 
Регистрация: 07.12.2010
Сообщений: 115
По умолчанию

Спасибо большое, с этим все ясно. Но трудность состоит в том что бы вывести строки которые идут после них.
скажем так
Код:
StringList: 
stroka 1
stroka 2
..
stroka 4(i:=4)
stroka 5
stroka 6
.. 
stroka 12(i:=i+8) 
stroka 13
..
stroka 20(i:=i+8)
Так вот, как можно вывести cnhjrb c 5 по 11 по нажатию на четвертую ?
CAMOBAP вне форума Ответить с цитированием
Старый 08.03.2011, 19:12   #4
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

Hомер, выбранной строки, находится в свойстве ItemIndex у TListBox.
Проходите циклом от i:=ItemIndex+1 до ItemIndex + 7 и "выводите" строки TStringList[i]
Используйте событие OnClick у TListBox
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 08.03.2011, 19:15   #5
CAMOBAP
Форумчанин
 
Регистрация: 07.12.2010
Сообщений: 115
По умолчанию

Немного не понял. Цикл составил, а в цикле не пойму как прописать. Вопрос еще в том что каждой строке (с ListBox1.ItemIndex+1 до ListBox1.ItemIndex+7 ) соответствует Label . На них и надо выводить.

Код:
for k:=sListBox1.ItemIndex+1 to sListBox1.ItemIndex+7 do
sLabel1.Caption:=sl[k];
sLabel2.Caption:=sl[k+1];
sLabel3.Caption:=sl[k+2];
sLabel4.Caption:=sl[k+3];
sLabel5.Caption:=sl[k+4};
но не совсем выходит

Последний раз редактировалось Stilet; 08.03.2011 в 19:51.
CAMOBAP вне форума Ответить с цитированием
Старый 08.03.2011, 19:55   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Имхо:
Код:
with sListBox1 do begin
 k:=ItemIndex+1;
 while k<(Count-1) do begin
  sLabel1.Caption:=sl[k];inc(k);
  sLabel2.Caption:=sl[k];inc(k);
  sLabel3.Caption:=sl[k];inc(k);
  sLabel4.Caption:=sl[k];inc(k);
  sLabel5.Caption:=sl[k];inc(k);
 end;
end;
Идея понятна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.03.2011, 20:03   #7
CAMOBAP
Форумчанин
 
Регистрация: 07.12.2010
Сообщений: 115
По умолчанию

Мне кажется что не совсем правильно.Ведь если k:=ItemIndex+1 и мы выбираем первый элемент listbox то k=2. Или я не прав?

Последний раз редактировалось CAMOBAP; 08.03.2011 в 20:15.
CAMOBAP вне форума Ответить с цитированием
Старый 08.03.2011, 20:22   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я просто следовал твоей логике, учитывая что тебя, извини, трудно понять.
Убери инкремент если он не нужен.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.03.2011, 22:51   #9
CAMOBAP
Форумчанин
 
Регистрация: 07.12.2010
Сообщений: 115
По умолчанию

А я следовал логике AlDelta.
Но проблему решил.Уравнение составил, решил и вывел алгоритм.
Вот что вышло.
Код:
z:=((13*sListBox1.ItemIndex)-5*((sListBox1.ItemIndex)-1));
showmessage(inttostr(z));
sLabel1.Caption:=sl[z];inc(z);
sLabel2.Caption:=sl[z];inc(z);
sLabel3.Caption:=sl[z];inc(z);
sLabel4.Caption:=sl[z];inc(z);
sLabel5.Caption:=sl[z];inc(z);
Спасибо всем. Без ваших подсказок не получилось бы.
CAMOBAP вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
RadioGroup и ListBox (Delphi) rita3 Помощь студентам 3 01.06.2010 03:39
Delphi,listbox. FCSM Помощь студентам 7 06.04.2010 14:48
Чужой Listbox[Delphi] VilAm Помощь студентам 0 21.11.2009 09:20
ListBox, Delphi grom333 Помощь студентам 22 18.11.2009 08:41
Задача! (ListBox, Delphi.) Mr.User Помощь студентам 6 16.11.2007 08:39