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

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

Помогите, пожалуйста, со списками. [D7, WinXP]


raqy.style ©   (2006-12-21 17:59:00) 

Вопрос, собственно, вот в чем. Есть у меня ListBox & ComboBox. В ListBox много всяких строк, в том числе и повторяющиеся. мне нужно что бы в comboBox-е появились строки из ListBox-а только в единственном экземпляре.

Заранее спасибо!


Loginov Dmitry   (2006-12-21 21:38:00) [1]

Все-же с дополнительным списком должно быть быстрее, имхо.


Anatoly Podgoretsky   (2006-12-21 20:32:00) [2]

> PZ  (21.12.2006 20:27:12)  [12]

Понял, да немного необычно.


PZ   (2006-12-21 20:27:00) [3]

> [11] Anatoly Podgoretsky ©   (21.12.06 20:10)

Я имел в виду использование ListBox -> StringList -> ComboBox


Anatoly Podgoretsky   (2006-12-21 20:10:00) [4]


> PZ   (21.12.06 19:58) [9]

Ты про какой вариант?
В общем они оба правильные, отличаться будут только скорость и потребностью в ресурсах, вариант с IndexOf требует меньше ресурсов, но возможно будет работать медленнее, при небольших объемах это не важно.


Anatoly Podgoretsky   (2006-12-21 20:08:00) [5]

> raqy.style  (21.12.2006 19:58:08)  [8]

Первую строчку comboBox1.Items.Add убрать.
Сравнение = 0 заменить на = -1
Чувствуется, что справку ты не читал.


raqy.style   (2006-12-21 19:58:00) [6]

пробую.
var i: integer;
begin

   comboBox1.Items.Add(listBox1.Items[0]) ;
   for i := 0 to listbox1.Items.Count -1 do
   begin
       if comboBox1.Items.IndexOf(listBox1.Items[i]) = 0 then
       comboBox1.Items.Add(listBox1.Items[i]);
   end;

end;
но увы.


PZ   (2006-12-21 19:58:00) [7]

> [3] Anatoly Podgoretsky ©   (21.12.06 19:05)

Да, конечно, как-то я не сообразил.


Anatoly Podgoretsky   (2006-12-21 19:52:00) [8]

> raqy.style  (21.12.2006 19:46:06)  [6]

Цикл один по ListBox, перед добавлением проверяешь на дубль с помощью ComboBox.Items.IndexOf


raqy.style   (2006-12-21 19:46:00) [9]


> Anatoly Podgoretsky ©   (21.12.06 19:09) [5]

Анатолий, если Вас не затруднит, приведите, пожалуйста, пример. Или хотя бы алгоритм опишите подробнее.

Я пробовал 2 цикла for. каждый элемент Комбо сверял с каждым из Лист. но желаемое не получалось.


Anatoly Podgoretsky   (2006-12-21 19:09:00) [10]

> raqy.style  (21.12.2006 19:07:04)  [4]

Второй вариант - ручками с проверкой на IndexOf
Что будет быстрее зависит от размера ListBox


raqy.style   (2006-12-21 19:07:00) [11]

Спасибо!!!!


Anatoly Podgoretsky   (2006-12-21 19:05:00) [12]

> PZ  (21.12.2006 18:55:02)  [2]

ListBox -> StringList -> ComboBox


PZ   (2006-12-21 18:55:00) [13]

К сожалению так не получится. Прошу извинить, ввел в заблуждение


PZ   (2006-12-21 18:44:00) [14]

B ComboBox надо установить Sorted = True и Duplicates = dupIgnore, после чего скопировать солержимое ListBox в ComboBox. Должно получиться желаемое.


Наверх

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